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