Module: Protocol::Caldav::Ical::FreeBusy
- Defined in:
- lib/protocol/caldav/ical/freebusy.rb
Class Method Summary collapse
-
.generate(items, range_start:, range_end:) ⇒ String
Generate a VCALENDAR containing VFREEBUSY from a list of calendar items.
Class Method Details
.generate(items, range_start:, range_end:) ⇒ String
Generate a VCALENDAR containing VFREEBUSY from a list of calendar items.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/protocol/caldav/ical/freebusy.rb', line 20 def generate(items, range_start:, range_end:) busy_periods = [] free_periods = [] items.each do |item| component = Parser.parse(item.body) next unless component component.find_components('VEVENT').each do |vevent| next if vevent.find_property('RECURRENCE-ID') # skip overrides in this pass status = vevent.find_property('STATUS')&.value&.strip&.upcase transp = vevent.find_property('TRANSP')&.value&.strip&.upcase is_free = status == 'CANCELLED' || transp == 'TRANSPARENT' rrule = vevent.find_property('RRULE') if rrule collect_recurring_periods(vevent, rrule, range_start, range_end, is_free, busy_periods, free_periods) else collect_single_period(vevent, range_start, range_end, is_free, busy_periods, free_periods) end end end serialize_freebusy(busy_periods, free_periods, range_start, range_end) end |