From 8e20191b693b9b1c91d487f58c455150b004719a Mon Sep 17 00:00:00 2001 From: Lars Henrik Mai Date: Thu, 10 Jul 2014 13:25:25 +0200 Subject: split class into multiple files and use new baikal server instance --- lib/sublab_calendar/calendar.rb | 48 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 lib/sublab_calendar/calendar.rb (limited to 'lib/sublab_calendar/calendar.rb') diff --git a/lib/sublab_calendar/calendar.rb b/lib/sublab_calendar/calendar.rb new file mode 100644 index 0000000..e136ff5 --- /dev/null +++ b/lib/sublab_calendar/calendar.rb @@ -0,0 +1,48 @@ +module SublabCalendar + + class Calendar + + attr_reader :calendar + + def initialize(ical) + @calendar = Icalendar.parse(ical).first + end + + def self.load(url=URL) + request = HTTPI::Request.new + request.url = URL + request.auth.digest(USER, PASS) + request.auth.ssl.verify_mode = :none + response = HTTPI.get(request) + + ical = response.body + new(ical) + end + + def events + calendar.events.map(&method(:readable)) + end + + def future + calendar.events.select {|ev| ev.dtstart >= DateTime.now}.map(&method(:readable)) + end + + def past + calendar.events.select {|ev| ev.dtstart < DateTime.now}.map(&method(:readable)) + end + + def recurring + events.select(&:"recurring?") + end + + def next(count=1) + future.take(count) + end + + def readable(event) + SublabCalendar::Event.new(event) + end + + end + +end -- cgit v1.2.1