From f8eaafd03647613dafec9f9422282f8613d08e9a Mon Sep 17 00:00:00 2001 From: Steven Miers Date: Thu, 25 Jun 2015 08:51:13 -0500 Subject: [PATCH] VRFS-3276 : Calendar Manager - initial checkin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create ICS events given individual parameters * Create calendar from music session * Also will create ICS “delete” events --- ruby/lib/jam_ruby/calendar_manager.rb | 43 +++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 ruby/lib/jam_ruby/calendar_manager.rb diff --git a/ruby/lib/jam_ruby/calendar_manager.rb b/ruby/lib/jam_ruby/calendar_manager.rb new file mode 100644 index 000000000..8dbaa507b --- /dev/null +++ b/ruby/lib/jam_ruby/calendar_manager.rb @@ -0,0 +1,43 @@ +module JamRuby + class CalendarManager + class << self + def ics_from_music_session(music_session, delete=false) + uid = "#{music_session.user_id}_#{music_session.id}@JamKazam" + text = "JamKazam Session #{music_session.description}" + case music_session.recurring_mode + when NO_RECURRING + create_ics_event(uid, text, scheduled_start, scheduled_start+scheduled_duration, delete) + when RECURRING_WEEKLY + create_ics_event(uid, text, scheduled_start, scheduled_start+scheduled_duration, delete) + else + raise ArgumentError("Recurring mode not supported: #{music_session.recurring_mode}") + end + end + + # @return calendar (as ICS string) for specified user + def create_ics_feed(user) + end + + def create_ics_event(uuid, summary, start_at, end_at, delete=false, sequence=0) + uuid ||= UUID.timestamp_create + event = "BEGIN:VEVENT\r\n" + event << "UID:#{uuid}\r\n" + event << "DTSTAMP:#{Time.now.utc().strftime(DATE_FORMAT)}\r\n" + event << "DTSTART:#{start_at.utc().strftime(DATE_FORMAT)}\r\n" + event << "DTEND:#{end_at.utc().strftime(DATE_FORMAT)}\r\n" + event << "SUMMARY:#{summary}\r\n" + if delete + event << "METHOD:CANCEL\r\n" + event << "STATUS:CANCELLED\r\n" + end + event << "SEQUENCE:#{sequence}\r\n" if sequence + event << "END:VEVENT" + end + + def create_ics_cal(ics_events) + "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:JamKazam\r\n#{ics_events}\r\nEND:VCALENDAR" + end + + end + end +end \ No newline at end of file