app/business_logic/services/btn/feed.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module Services
  module Btn
    class Feed
      include Enumerable

      def initialize(url)
        @url = url
      end

      def published_since(time)
        feed.entries.select do |entry|
          entry.published > time
        end.map{|entry| Services::Btn::Release.from_feed_entry(entry)}
      end

      def each
        feed.entries.each do |entry|
          yield Services::Btn::Release.from_feed_entry(entry)
        end
      end

      private

      def feed
        @feed ||= Feedjira.parse(HTTP.get(@url).body.to_s)
      rescue Feedjira::NoParserAvailable
        raise BtnIsProbablyDownError
      end

      class BtnIsProbablyDownError < StandardError; end
    end
  end
end