Module: Flycal::EventMapper
- Defined in:
- lib/flycal/event_mapper.rb
Overview
Normalizes Google Calendar API event objects into plain hashes.
Class Method Summary collapse
Class Method Details
.extract_end(event, start_time) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/flycal/event_mapper.rb', line 46 def extract_end(event, start_time) if event.end&.date_time event.end.date_time elsif event.end&.date Date.parse(event.end.date.to_s) else start_time + 3600 end rescue ArgumentError start_time + 3600 end |
.extract_start(event) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/flycal/event_mapper.rb', line 34 def extract_start(event) if event.start&.date_time event.start.date_time elsif event.start&.date Date.parse(event.start.date.to_s) else Time.now end rescue ArgumentError Time.now end |
.to_h(event) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/flycal/event_mapper.rb', line 10 def to_h(event) start_time = extract_start(event) end_time = extract_end(event, start_time) { id: event.id || SecureRandom.uuid, summary: event.summary || "(No title)", description: event.description, location: event.location, start_time: start_time, end_time: end_time, all_day: !event.start&.date.nil? && event.start&.date_time.nil?, status: event.status || "confirmed", html_link: event.html_link, creator: event.creator&.email, organizer: event.organizer&.email, attendees: Array(event.attendees).map do |attendee| { email: attendee.email, response_status: attendee.response_status } end } rescue StandardError nil end |