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