lib/almanack/event_source/ical_feed.rb in almanack-1.1.2 vs lib/almanack/event_source/ical_feed.rb in almanack-1.1.3.rc1

- old
+ new

@@ -1,65 +1,29 @@ module Almanack module EventSource class IcalFeed - def initialize(url, options = {}) - @url = url - @options = options - end + extend Forwardable - def events_between(date_range) - occurrences_between(date_range).map do |occurrence| - event_from(occurrence) - end - end + attr_reader :ical, :connection - def serialized_between(date_range) - { events: events_between(date_range).map(&:serialized) } - end + def_delegators :ical, :events_between, :serialized_between - private - - def each_ical_event(&block) - entities.each do |entity| - entity.events.each(&block) if entity.respond_to?(:events) - end + def initialize(url, connection:) + @url = url + @connection = connection end - def occurrences_between(date_range) - to_date = date_range.max - from_date = date_range.min - - occurrences = [] - - each_ical_event do |ical_event| - ical_event.occurrences(starting: from_date, before: to_date).each do |occurrence| - occurrences << occurrence - end - end - - occurrences + def ical + @ical ||= Ical.from(response.body) end - def event_from(occurrence) - Event.new( - title: occurrence.summary, - start_time: occurrence.dtstart, - end_time: occurrence.dtend, - description: occurrence.description, - location: occurrence.location - ) - end + private - def entities - RiCal.parse_string(response.body) + def uri + Addressable::URI.parse(@url) end - def connection - @options[:connection] - end - def response - uri = Addressable::URI.parse(@url) connection.get(uri) end end end