Aupajo / almanack

Aggregate iCal and Google Calendar events. Pluggable or standalone app. UI optional and 100% customisable.
MIT License
53 stars 25 forks source link

Invalid timezone identifier in iCloud feed #24

Open steveb85 opened 5 years ago

steveb85 commented 5 years ago

I'm wondering if we could integrate iCloud as well, using the apple app passwords and the method of finding the calendar URL from here https://www.techrepublic.com/article/how-to-find-your-icloud-calendar-url/ if so it would be a huge help.

Aupajo commented 5 years ago

@steveb85 It might already work! It looks like iCloud uses CalDAV, which broadcasts iCalendar format.

Try adding this to your config.ru:

c.add_ical_feed 'YOUR-ICLOUD-CALDAV-URL`

You'll need to replace the webcal:// with https://.

Let me know what it says!

steveb85 commented 5 years ago

@aupajo thanks, it seems that there is a timezone identifier issue, hopefully this is a simple fix?

WARNING: If you plan to load any of ActiveSupport's core extensions to Hash, be
sure to do so *before* loading Sinatra::Application or Sinatra::Base. If not,
you may disregard this warning.

Set SINATRA_ACTIVESUPPORT_WARNING=false in the environment to hide this warning.
[2019-05-06 10:59:27] INFO  WEBrick 1.3.1
[2019-05-06 10:59:27] INFO  ruby 2.3.0 (2015-12-25) [x86_64-darwin17]
[2019-05-06 10:59:27] INFO  WEBrick::HTTPServer#start: pid=68137 port=9292
2019-05-06 10:59:48 - RiCal::InvalidTimezoneIdentifier - "GMT-0400" is not known to the tzinfo database:
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/component/calendar.rb:151:in `rescue in find_timezone'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/component/calendar.rb:148:in `find_timezone'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/component.rb:67:in `find_timezone'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/property_value/date_time/timezone_support.rb:27:in `find_timezone'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/property_value/date_time/timezone_support.rb:32:in `timezone'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/property_value/date_time/timezone_support.rb:61:in `rational_tz_offset'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/property_value/date_time.rb:312:in `ruby_value'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/properties/event.rb:134:in `dtstart'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/occurrence_enumerator.rb:100:in `before_start?'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/occurrence_enumerator.rb:133:in `each'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/occurrence_enumerator.rb:173:in `to_a'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/occurrence_enumerator.rb:173:in `to_a'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/occurrence_enumerator.rb:193:in `occurrences'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:34:in `block in occurrences_between'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:23:in `each'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:23:in `block in each_ical_event'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:22:in `each'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:22:in `each_ical_event'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:33:in `occurrences_between'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:10:in `events_between'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/calendar.rb:23:in `block (2 levels) in events_between'
::1 - - [06/May/2019:10:59:48 -0400] "GET / HTTP/1.1" 500 77883 0.9843
2019-05-06 11:03:27 - RiCal::InvalidTimezoneIdentifier - "GMT-0400" is not known to the tzinfo database:
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/component/calendar.rb:151:in `rescue in find_timezone'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/component/calendar.rb:148:in `find_timezone'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/component.rb:67:in `find_timezone'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/property_value/date_time/timezone_support.rb:27:in `find_timezone'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/property_value/date_time/timezone_support.rb:32:in `timezone'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/property_value/date_time/timezone_support.rb:61:in `rational_tz_offset'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/property_value/date_time.rb:312:in `ruby_value'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/properties/event.rb:134:in `dtstart'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/occurrence_enumerator.rb:100:in `before_start?'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/occurrence_enumerator.rb:133:in `each'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/occurrence_enumerator.rb:173:in `to_a'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/occurrence_enumerator.rb:173:in `to_a'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ri_cal-0.8.8/lib/ri_cal/occurrence_enumerator.rb:193:in `occurrences'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:34:in `block in occurrences_between'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:23:in `each'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:23:in `block in each_ical_event'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:22:in `each'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:22:in `each_ical_event'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:33:in `occurrences_between'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/event_source/ical_feed.rb:10:in `events_between'
    /Users/stephenbartlett/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/almanack-1.1.0/lib/almanack/calendar.rb:23:in `block (2 levels) in events_between'
::1 - - [06/May/2019:11:03:27 -0400] "GET / HTTP/1.1" 500 77883 0.6915
Aupajo commented 5 years ago

@steveb85 Hmm… It looks like the dates are using an unusual or invalid format, which is causing RiCal, the library I'm using to parse iCal feeds, to fail. To fix this, I'll need to understand:

  1. What the raw source of the iCal feed looks like, specifically the date fields
  2. Whether this date format is valid by the iCal format or not, to decide whether to fix this in Almanack or RiCal

Is there any chance you could send the (scrubbed) output of the feed?

curl https://YOUR-ICLOUD-CALDAV-URL

Should do the trick.

steveb85 commented 5 years ago

@aupajo thanks so much! I've grabbed one event, let me know if this is enough. The data all makes perfect sense to me, and i can't see anything weird, so it has to be the format? Every event follows this same formatting, with the exception of recurring events which add

"RRULE:FREQ=YEARLY" for example.

END:VEVENT
BEGIN:VEVENT
CREATED:20190507T152738Z
UID:81C19F2D-8EB8-4591-BD05-4FA41C77F56C
DTEND;TZID=America/New_York:20190509T230000
SUMMARY:E**** 
DTSTART;TZID=America/New_York:20190509T173000
DTSTAMP:20190507T152747Z
LOCATION:work
SEQUENCE:0
Aupajo commented 5 years ago

Hmm 🤔 Those values all look fine to me. I'll probably need to look into RiCal's source to dig deeper. I wonder where GMT-0400 is coming from. Can you see that string in the curl output anywhere?

steveb85 commented 5 years ago

at the end of the curl, there is a whole bunch of rules, it looks like to do with daylight savings, but as if it's setting them up for each and every timezone, which would make sense... but they seem to be some odd years, back to 1916 etc (copied below)

END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19180331T020000
RRULE:FREQ=YEARLY;UNTIL=19190330T100000Z;BYMONTH=3;BYDAY=-1SU
TZNAME:PDT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19181027T020000
RRULE:FREQ=YEARLY;UNTIL=19191026T090000Z;BYMONTH=10;BYDAY=-1SU
TZNAME:PST
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19420209T020000
RDATE:19420209T020000
TZNAME:PWT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19450814T160000
RDATE:19450814T160000
TZNAME:PPT
TZOFFSETFROM:-0700
TZOFFSETTO:-0700
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19450930T020000
RDATE:19450930T020000
RDATE:19490101T020000
TZNAME:PST
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
END:STANDARD
BEGIN:STANDARD
DTSTART:19460101T000000
RDATE:19460101T000000
RDATE:19670101T000000
TZNAME:PST
TZOFFSETFROM:-0800
TZOFFSETTO:-0800
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19480314T020100
RDATE:19480314T020100
RDATE:19740106T020000
RDATE:19750223T020000
TZNAME:PDT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19500430T010000
RRULE:FREQ=YEARLY;UNTIL=19660424T090000Z;BYMONTH=4;BYDAY=-1SU
TZNAME:PDT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19500924T020000
RRULE:FREQ=YEARLY;UNTIL=19610924T090000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:PST
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
END:STANDARD
BEGIN:STANDARD
DTSTART:19621028T020000
RRULE:FREQ=YEARLY;UNTIL=19661030T090000Z;BYMONTH=10;BYDAY=-1SU
TZNAME:PST
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19670430T020000
RRULE:FREQ=YEARLY;UNTIL=19730429T100000Z;BYMONTH=4;BYDAY=-1SU
TZNAME:PDT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;UNTIL=20061029T090000Z;BYMONTH=10;BYDAY=-1SU
TZNAME:PST
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19760425T020000
RRULE:FREQ=YEARLY;UNTIL=19860427T100000Z;BYMONTH=4;BYDAY=-1SU
TZNAME:PDT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19870405T020000
RRULE:FREQ=YEARLY;UNTIL=20060402T100000Z;BYMONTH=4;BYDAY=1SU
TZNAME:PDT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:20070311T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
TZNAME:PDT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:20071104T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
TZNAME:PST
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Europe/London
X-LIC-LOCATION:Europe/London
BEGIN:STANDARD
DTSTART:18471201T000000
RDATE:18471201T000000
TZNAME:S
TZOFFSETFROM:-000115
TZOFFSETTO:+0000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19160521T020000
RDATE:19160521T020000
RDATE:19170408T020000
RDATE:19180324T020000
RDATE:19190330T020000
RDATE:19200328T020000
RDATE:19210403T020000
RDATE:19220326T020000
RDATE:19230422T020000
RDATE:19240413T020000
RDATE:19270410T020000
RDATE:19300413T020000
RDATE:19330409T020000
RDATE:19340422T020000
RDATE:19350414T020000
RDATE:19380410T020000
RDATE:19390416T020000
RDATE:19400225T020000
RDATE:19460414T020000
RDATE:19470316T020000
RDATE:19480314T020000
RDATE:19490403T020000
RDATE:19530419T020000
RDATE:19540411T020000
RDATE:19570414T020000
RDATE:19600410T020000
RDATE:19680218T020000
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19161001T030000
RDATE:19161001T030000
RDATE:19170917T030000
RDATE:19180930T030000
RDATE:19190929T030000
RDATE:19201025T030000
RDATE:19211003T030000
RDATE:19221008T030000
RDATE:19391119T030000
RDATE:19471102T030000
RDATE:19481031T030000
RDATE:19491030T030000
RDATE:19711031T030000
TZNAME:GMT
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:STANDARD
DTSTART:19230916T030000
RRULE:FREQ=YEARLY;UNTIL=19240921T020000Z;BYMONTH=9;BYMONTHDAY=16,17,18,19
 ,20,21,22;BYDAY=SU
TZNAME:GMT
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19250419T020000
RRULE:FREQ=YEARLY;UNTIL=19260418T020000Z;BYMONTH=4;BYMONTHDAY=16,17,18,19
 ,20,21,22;BYDAY=SU
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19251004T030000
RRULE:FREQ=YEARLY;UNTIL=19381002T020000Z;BYMONTH=10;BYMONTHDAY=2,3,4,5,6,
 7,8;BYDAY=SU
TZNAME:GMT
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19280422T020000
RRULE:FREQ=YEARLY;UNTIL=19290421T020000Z;BYMONTH=4;BYMONTHDAY=16,17,18,19
 ,20,21,22;BYDAY=SU
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19310419T020000
RRULE:FREQ=YEARLY;UNTIL=19320417T020000Z;BYMONTH=4;BYMONTHDAY=16,17,18,19
 ,20,21,22;BYDAY=SU
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19360419T020000
RRULE:FREQ=YEARLY;UNTIL=19370418T020000Z;BYMONTH=4;BYMONTHDAY=16,17,18,19
 ,20,21,22;BYDAY=SU
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19410504T020000
RDATE:19410504T020000
RDATE:19450402T020000
RDATE:19470413T020000
TZNAME:BDST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19410810T030000
RRULE:FREQ=YEARLY;UNTIL=19430815T010000Z;BYMONTH=8;BYMONTHDAY=9,10,11,12,
 13,14,15;BYDAY=SU
TZNAME:BST
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19420405T020000
RRULE:FREQ=YEARLY;UNTIL=19440402T010000Z;BYMONTH=4;BYMONTHDAY=2,3,4,5,6,7
 ,8;BYDAY=SU
TZNAME:BDST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19440917T030000
RDATE:19440917T030000
RDATE:19450715T030000
RDATE:19470810T030000
TZNAME:BST
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19451007T030000
RRULE:FREQ=YEARLY;UNTIL=19461006T020000Z;BYMONTH=10;BYMONTHDAY=2,3,4,5,6,
 7,8;BYDAY=SU
TZNAME:GMT
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19500416T020000
RRULE:FREQ=YEARLY;UNTIL=19520420T020000Z;BYMONTH=4;BYMONTHDAY=14,15,16,17
 ,18,19,20;BYDAY=SU
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19501022T030000
RRULE:FREQ=YEARLY;UNTIL=19521026T020000Z;BYMONTH=10;BYMONTHDAY=21,22,23,2
 4,25,26,27;BYDAY=SU
TZNAME:GMT
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:STANDARD
DTSTART:19531004T030000
RRULE:FREQ=YEARLY;UNTIL=19601002T020000Z;BYMONTH=10;BYMONTHDAY=2,3,4,5,6,
 7,8;BYDAY=SU
TZNAME:GMT
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19550417T020000
RRULE:FREQ=YEARLY;UNTIL=19560422T020000Z;BYMONTH=4;BYMONTHDAY=16,17,18,19
 ,20,21,22;BYDAY=SU
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19580420T020000
RRULE:FREQ=YEARLY;UNTIL=19590419T020000Z;BYMONTH=4;BYMONTHDAY=16,17,18,19
 ,20,21,22;BYDAY=SU
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19610326T020000
RRULE:FREQ=YEARLY;UNTIL=19630331T020000Z;BYMONTH=3;BYDAY=-1SU
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19611029T030000
RRULE:FREQ=YEARLY;UNTIL=19671029T020000Z;BYMONTH=10;BYMONTHDAY=23,24,25,2
 6,27,28,29;BYDAY=SU
TZNAME:GMT
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19640322T020000
RRULE:FREQ=YEARLY;UNTIL=19670319T020000Z;BYMONTH=3;BYMONTHDAY=19,20,21,22
 ,23,24,25;BYDAY=SU
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19681027T000000
RDATE:19681027T000000
TZNAME:BST
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19720319T020000
RRULE:FREQ=YEARLY;UNTIL=19800316T020000Z;BYMONTH=3;BYMONTHDAY=16,17,18,19
 ,20,21,22;BYDAY=SU
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19721029T030000
RRULE:FREQ=YEARLY;UNTIL=19801026T020000Z;BYMONTH=10;BYMONTHDAY=23,24,25,2
 6,27,28,29;BYDAY=SU
TZNAME:GMT
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19810329T010000
RRULE:FREQ=YEARLY;UNTIL=19950326T010000Z;BYMONTH=3;BYDAY=-1SU
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19811025T020000
RRULE:FREQ=YEARLY;UNTIL=19891029T010000Z;BYMONTH=10;BYMONTHDAY=23,24,25,2
 6,27,28,29;BYDAY=SU
TZNAME:GMT
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:STANDARD
DTSTART:19901028T020000
RRULE:FREQ=YEARLY;UNTIL=19951022T010000Z;BYMONTH=10;BYDAY=4SU
TZNAME:GMT
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:STANDARD
DTSTART:19960101T000000
RDATE:19960101T000000
TZNAME:GMT
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19960331T010000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
TZNAME:BST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19961027T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:GMT
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:GMT+0100
X-LIC-LOCATION:GMT+0100
BEGIN:STANDARD
DTSTART:18000101T010000
RDATE:18000101T010000
TZNAME:+01
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Europe/Amsterdam
X-LIC-LOCATION:Europe/Amsterdam
BEGIN:STANDARD
DTSTART:18350101T000000
RDATE:18350101T000000
TZNAME:S
TZOFFSETFROM:+001932
TZOFFSETTO:+001932
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19160501T000000
RDATE:19160501T000000
RDATE:19170416T020000
RDATE:19220326T020000
RDATE:19230601T020000
RDATE:19240330T020000
RDATE:19250605T020000
RDATE:19320522T020000
RDATE:19370522T020000
TZNAME:NST
TZOFFSETFROM:+001932
TZOFFSETTO:+011932
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19161001T000000
RDATE:19161001T000000
RDATE:19170917T030000
TZNAME:AMT
TZOFFSETFROM:+011932
TZOFFSETTO:+001932
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19180401T020000
RRULE:FREQ=YEARLY;UNTIL=19210404T014028Z;BYMONTH=4;BYDAY=1MO
TZNAME:NST
TZOFFSETFROM:+001932
TZOFFSETTO:+011932
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19180930T030000
RRULE:FREQ=YEARLY;UNTIL=19210926T014028Z;BYMONTH=9;BYDAY=-1MO
TZNAME:AMT
TZOFFSETFROM:+011932
TZOFFSETTO:+001932
END:STANDARD
BEGIN:STANDARD
DTSTART:19221008T030000
RRULE:FREQ=YEARLY;UNTIL=19361004T014028Z;BYMONTH=10;BYMONTHDAY=2,3,4,5,6,
 7,8;BYDAY=SU
TZNAME:AMT
TZOFFSETFROM:+011932
TZOFFSETTO:+001932
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19260515T020000
RRULE:FREQ=YEARLY;UNTIL=19310515T014028Z;BYMONTH=5
TZNAME:NST
TZOFFSETFROM:+001932
TZOFFSETTO:+011932
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19330515T020000
RRULE:FREQ=YEARLY;UNTIL=19360515T014028Z;BYMONTH=5
TZNAME:NST
TZOFFSETFROM:+001932
TZOFFSETTO:+011932
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19370701T000000
RDATE:19370701T000000
TZNAME:+0120
TZOFFSETFROM:+011932
TZOFFSETTO:+0120
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19371003T030000
RRULE:FREQ=YEARLY;UNTIL=19391008T014000Z;BYMONTH=10;BYMONTHDAY=2,3,4,5,6,
 7,8;BYDAY=SU
TZNAME:+0020
TZOFFSETFROM:+0120
TZOFFSETTO:+0020
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19380515T020000
RRULE:FREQ=YEARLY;UNTIL=19390515T014000Z;BYMONTH=5
TZNAME:+0120
TZOFFSETFROM:+0020
TZOFFSETTO:+0120
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19400516T000000
RDATE:19400516T000000
TZNAME:CEST
TZOFFSETFROM:+0020
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19421102T030000
RDATE:19421102T030000
RDATE:19431004T030000
RDATE:19441002T030000
RDATE:19450916T030000
RDATE:19770925T030000
RDATE:19781001T030000
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19430329T020000
RDATE:19430329T020000
RDATE:19440403T020000
RDATE:19450402T020000
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19770101T000000
RDATE:19770101T000000
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19770403T020000
RRULE:FREQ=YEARLY;UNTIL=19800406T010000Z;BYMONTH=4;BYDAY=1SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19790930T030000
RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19810329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19961027T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:America/New_York
X-LIC-LOCATION:America/New_York
BEGIN:STANDARD
DTSTART:18831118T120358
RDATE:18831118T120358
TZNAME:EST
TZOFFSETFROM:-045602
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19180331T020000
RRULE:FREQ=YEARLY;UNTIL=19190330T070000Z;BYMONTH=3;BYDAY=-1SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19181027T020000
RRULE:FREQ=YEARLY;UNTIL=19191026T060000Z;BYMONTH=10;BYDAY=-1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:STANDARD
DTSTART:19200101T000000
RDATE:19200101T000000
RDATE:19420101T000000
RDATE:19460101T000000
RDATE:19670101T000000
TZNAME:EST
TZOFFSETFROM:-0500
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19200328T020000
RDATE:19200328T020000
RDATE:19740106T020000
RDATE:19750223T020000
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19201031T020000
RDATE:19201031T020000
RDATE:19450930T020000
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19210424T020000
RRULE:FREQ=YEARLY;UNTIL=19410427T070000Z;BYMONTH=4;BYDAY=-1SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19210925T020000
RRULE:FREQ=YEARLY;UNTIL=19410928T060000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19420209T020000
RDATE:19420209T020000
TZNAME:EWT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19450814T190000
RDATE:19450814T190000
TZNAME:EPT
TZOFFSETFROM:-0400
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19460428T020000
RRULE:FREQ=YEARLY;UNTIL=19660424T070000Z;BYMONTH=4;BYDAY=-1SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19460929T020000
RRULE:FREQ=YEARLY;UNTIL=19540926T060000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:STANDARD
DTSTART:19551030T020000
RRULE:FREQ=YEARLY;UNTIL=19661030T060000Z;BYMONTH=10;BYDAY=-1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19670430T020000
RRULE:FREQ=YEARLY;UNTIL=19730429T070000Z;BYMONTH=4;BYDAY=-1SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;UNTIL=20061029T060000Z;BYMONTH=10;BYDAY=-1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19760425T020000
RRULE:FREQ=YEARLY;UNTIL=19860427T070000Z;BYMONTH=4;BYDAY=-1SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19870405T020000
RRULE:FREQ=YEARLY;UNTIL=20060402T070000Z;BYMONTH=4;BYDAY=1SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:20070311T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:20071104T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
steveb85 commented 5 years ago

In the curl i do get some mentions of other timezones, only on events that were sent from other people in other timezones (i work across multiple, which is why i'm so keen on almanack.... a cross referenced calendar) but they all seem quiet normal.

Aupajo commented 5 years ago

@steveb85 I'm having trouble reproducing the issue. I created my own iCloud calendar, followed your linked instructions, and it worked for me.

Reading the RiCal source for the stack trace you posted, the issue seems to be the moment the dtstart property is attempted to be converted into a Ruby DateTime object. In your call stack, this means calling out to TZInfo::Timezone, which results in an error:

TZInfo::Timezone.get('GMT-0400') # => raises Invalid identifier (TZInfo::InvalidTimezoneIdentifier)

So the trick is to figure out where that “GMT-0400” is coming from.

Is there any chance you send me the full output of curl (with sensitive information redacted)?

steveb85 commented 5 years ago

Thanks! I can do, I’ll just need a couple of days to get onto it, I’ll also try another iCal feed and see if I can narrow it down on my end.

steveb85 commented 5 years ago

@Aupajo I have also tried new "clean" calendars from ical and it seems to work perfectly, I've been problem solving, and i think perhaps it's to do with the "location" issue you've pointed out as a new issue. I want to test that quickly, otherwise I will send through the full curl

steveb85 commented 5 years ago

This is a new calendar, and i've only put a handful of events in, but it seems to crash the page. Another calendar that i've manually entered the events in, with no timezone info seems to work fine. This has some that have come from Apps, and have invites attached to it, but i don't see how that should cause a problem

BEGIN:VCALENDAR
VERSION:2.0
X-WR-CALNAME:Smel
X-APPLE-CALENDAR-COLOR:#E6C800
X-WR-CALDESC:
BEGIN:VEVENT
CREATED:20190510T170447Z
UID:8493FCD5-BA44-4F61-8906-8582CE2F8D17
DTEND;TZID=America/New_York:20190523T200000
SUMMARY:Drinks with 
LAST-MODIFIED:20190510T170512Z
DTSTAMP:20190510T170512Z
DTSTART;TZID=America/New_York:20190523T190000
LOCATION:Tribeca
SEQUENCE:0
END:VEVENT
BEGIN:VEVENT
DTEND;TZID=GMT-0400:20190603T190000
X-APPLE-SUGGESTION-INFO-TIMESTAMP:20500501T174627
UID:AC2D0351-EB94-4CA8-8B2A-6E6E63A6AE9F
LOCATION:, Canada
DTSTAMP:20190502T155344Z
X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-ADDRESS="6301 Silver Dart Dr, Mis
 sissauga ON  L5P 1B2, Canada";X-APPLE-MAPKIT-HANDLE=CAESlwIIrk0Q7p2vn8+0
 gfLhARoSCbX6KGQh10VAEQAAAEok51PAIpMBCgZDYW5hZGESAkNBGgdPbnRhcmlvIgJPTioE
 UGVlbDILTWlzc2lzc2F1Z2E6B0w1UCAxQjJSDlNpbHZlciBEYXJ0IERyWgQ2MzAxYhM2MzAx
 IFNpbHZlciBEYXJ0IERyciVUb3JvbnRvIFBlYXJzb24gSW50ZXJuYXRpb25hbCBBaXJwb3J0
 igEJTm9ydGhlYXN0KiVUb3JvbnRvIFBlYXJzb24gSW50ZXJuYXRpb25hbCBBaXJwb3J0MhM2
 MzAxIFNpbHZlciBEYXJ0IERyMhdNaXNzaXNzYXVnYSBPTiAgTDVQIDFCMjIGQ2FuYWRhODk=
 ;X-TITLE=
DESCRIPTION:Confirmation Code: 
URL;VALUE=URI:message://%3C943193076.6161.1556732787966.JavaMail.MUCEAP26
 1$%40relay.amadeus.net%3E?c=1556732787&k=%7CflightAC%5C%7CYYZ%5C%7CLGA%5
 C%7C720%5C%7
SEQUENCE:0
X-APPLE-SUGGESTION-INFO-OPAQUE-KEY:|f
X-APPLE-SUGGESTION-INFO-UNIQUE-KEY:|2|\\|flightAC\\\\\\|YYZ\\\\\\|LGA\\\\
 \\|720\\\\\\|QJX35M|\\|5\\|\\\\\\|
 >
X-APPLE-SUGGESTION-INFO-CHANGED-FIELDS:0
SUMMARY:Flight: 
LAST-MODIFIED:20190513T170301Z
DTSTART;TZID=GMT-0400:20190603T173000
CREATED:20190501T174639Z
X-APPLE-STRUCTURED-DATA:YnBsaXN0MDDUAAEAAgADAAQABQAGAQ0BDlgkdmVyc2lvblgkb
 2JqZWN0c1kkYXJjaGl2ZXJUJHRvcBIAAYagrxBYAAcACAARABIAFgAqACsALAAtAC4ALwAwA
 DEAMgAzAEsATABNAE4ATwBQAFEAUgBTAFQAYgBjAGQAZQBmAHAAcQByAHMAdAB1AHsAfAB9A
 H4AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCrALUAtgC3ALgAuQDJAMoAywDMA
 M0AzgDWANcA2ADZANoA5ADlAO0A7gDvAPUA9gD3APgA/gD/AQUBBgEHAQpVJG51bGzTAAkAC
 gALAAwADgAQV05TLmtleXNaTlMub2JqZWN0c1YkY2xhc3OhAA2AAqEAD4ADgFdfEBRTdWdnZ
 XN0aW9uc1NjaGVtYU9yZ9IACgALABMAFaEAFIAEgFbTAAkACgALABcAIAApqAAYABkAGgAbA
 BwAHQAeAB+ABYAGgAeACIAJgAqAC4AMqAAhACIAIwAkACUAJgAnACiADYAOgEqAT4BQgFGAU
 4BVgCNfEBFyZXNlcnZhdGlvblN0YXR1c15yZXNlcnZhdGlvbkZvcl5yZXNlcnZlZFRpY2tld
 FVAdHlwZV1yZXNlcnZhdGlvbklkXxAVcHJvZ3JhbU1lbWJlcnNoaXBVc2VkWXVuZGVyTmFtZ
 VhAY29udGV4dF8QJmh0dHA6Ly9zY2hlbWEub3JnL1Jlc2VydmF0aW9uQ29uZmlybWVk0wAJA
 AoACwA0AD8AKaoANQA2ADcAGwA5ADoAOwA8AD0APoAPgBCAEYAIgBKAE4AUgBWAFoAXqgBAA
 EEAQgBDAEQARQBGAEcASABJgBiAM4A0gDWANoA3gEOARoBHgEiAI18QEGRlcGFydHVyZUFpc
 nBvcnRdZGVwYXJ0dXJlVGltZVthcnJpdmFsVGltZV8QD2Fycml2YWxUZXJtaW5hbF5hcnJpd
 mFsQWlycG9ydFpvcGVyYXRlZEJ5XGZsaWdodE51bWJlcl8QEWRlcGFydHVyZVRlcm1pbmFsV
 2FpcmxpbmXTAAkACgALAFUAWwAppQBWAFcAWAAbAFqAGYAagBuACIAcpQBcAF0AXgBfAGCAH
 YAkgCWAJoAngCNTZ2VvWGlhdGFDb2RlVG5hbWVXYWRkcmVzc9MACQAKAAsAZwBrACmjABsAa
 QBqgAiAHoAfowBsAG0AboAggCGAIoAjWWxvbmdpdHVkZVhsYXRpdHVkZV8QIGh0dHA6Ly9zY
 2hlbWEub3JnL0dlb0Nvb3JkaW5hdGVzWS03OS42MTE0Nlk0My42ODE1ODXSAHYAdwB4AHlaJ
 GNsYXNzbmFtZVgkY2xhc3Nlc1xOU0RpY3Rpb25hcnmiAHgAelhOU09iamVjdFNZWVpfEB1QZ
 WFyc29uIEludGVybmF0aW9uYWwgQWlycG9ydF8QGWh0dHA6Ly9zY2hlbWEub3JnL0FpcnBvc
 nTTAAkACgALAH8AhgAppgAbAIEAggCDAIQAhYAIgCiAKYAqgCuALKYAhwCIAIkAigCLAIyAL
 YAugC+AMIAxgDKAI18QD2FkZHJlc3NMb2NhbGl0eV5hZGRyZXNzQ291bnRyeV1hZGRyZXNzU
 mVnaW9uXXN0cmVldEFkZHJlc3NacG9zdGFsQ29kZV8QH2h0dHA6Ly9zY2hlbWEub3JnL1Bvc
 3RhbEFkZHJlc3NXVG9yb250b1ZDYW5hZGFST05fEBM2MzAxIFNpbHZlciBEYXJ0IERyV0w1U
 CAxQjJfEBkyMDE5LTA2LTAzVDE3OjMwOjAwLTA0OjAwXxAZMjAxOS0wNi0wM1QxOTowMDowM
 C0wNDowMF8QGGh0dHA6Ly9zY2hlbWEub3JnL0ZsaWdodFFC0wAJAAoACwCeAKQAKaUAVgBXA
 FgAGwBagBmAGoAbgAiAHKUApQCmAKcAXwCpgDiAO4A8gCaAPYAj0wAJAAoACwCsALAAKaMAG
 wBpAGqACIAegB+jAGwAsgCzgCCAOYA6gCNaLTczLjg3MTYxN1k0MC43NzQyNTJTTEdBXxART
 GFHdWFyZGlhIEFpcnBvcnTTAAkACgALALoAwQAppgAbAIEAggCDAIQAhYAIgCiAKYAqgCuAL
 KYAhwDDAMQAxQDGAMeALYA+gD+AQIBBgEKAI1hOZXcgWW9ya11Vbml0ZWQgU3RhdGVzUk5ZX
 xAPSGFuZ2FyIDcgQ2VudGVyVTExMzcx0wAJAAoACwDPANIAKaIAGwBXgAiAGqIA0wDUgESAR
 YAjXxAZaHR0cDovL3NjaGVtYS5vcmcvQWlybGluZVJBQ1M3MjBRMdMACQAKAAsA2wDfACmjA
 BsAWABXgAiAG4AaowDTAOEA1IBEgEmARYAjWkFpciBDYW5hZGHTAAkACgALAOYA6QApogAbA
 OiACIBLogDqAOuATIBNgCNcdGlja2V0ZWRTZWF0XxAYaHR0cDovL3NjaGVtYS5vcmcvVGlja
 2V00wAJAAoACwDwAPIAKaEAG4AIoQDzgE6AI18QFmh0dHA6Ly9zY2hlbWEub3JnL1NlYXRfE
 CNodHRwOi8vc2NoZW1hLm9yZy9GbGlnaHRSZXNlcnZhdGlvblZRSlgzNU3TAAkACgALAPkA+
 wApoQAbgAihAPyAUoAjXxAjaHR0cDovL3NjaGVtYS5vcmcvUHJvZ3JhbU1lbWJlcnNoaXDTA
 AkACgALAQABAgApoQAbgAihAQOAVIAjXxAYaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uXxARa
 HR0cDovL3NjaGVtYS5vcmfSAHYAdwEIAQlXTlNBcnJheaIBCAB60gB2AHcBCwEMXxATTlNNd
 XRhYmxlRGljdGlvbmFyeaMBCwB4AHpfEA9OU0tleWVkQXJjaGl2ZXLRAQ8BEFRyb290gAEAC
 AAZACIAKwA1ADoAPwDyAPgBBQENARgBHwEiASQBJwEpASsBQgFLAU4BUAFSAV8BcAFyAXQBd
 gF4AXoBfAF+AYABkQGTAZUBlwGZAZsBnQGfAaEBowG3AcYB1QHbAekCAQILAhQCPQJKAl8CY
 QJjAmUCZwJpAmsCbQJvAnECcwKIAooCjAKOApACkgKUApYCmAKaApwCngKxAr8CywLdAuwC9
 wMEAxgDIAMtAzgDOgM8Az4DQANCA00DTwNRA1MDVQNXA1kDXQNmA2sDcwOAA4cDiQOLA40Dl
 AOWA5gDmgOcA6YDrwPSA9wD5gPvA/oEAwQQBBUEHgQiBEIEXgRrBHgEegR8BH4EgASCBIQEk
 QSTBJUElwSZBJsEnQSfBLEEwATOBNwE5wUJBREFGAUbBTEFOQVVBXEFjAWOBZsFpgWoBaoFr
 AWuBbAFuwW9Bb8FwQXDBcUFxwXUBdsF3QXfBeEF6AXqBewF7gXwBfsGBQYJBh0GKgY3BjkGO
 wY9Bj8GQQZDBlAGUgZUBlYGWAZaBlwGXgZnBnUGeAaKBpAGnQaiBqQGpgarBq0GrwaxBs0G0
 AbUBtYG4wbqBuwG7gbwBvcG+Qb7Bv0G/wcKBxcHHAceByAHJQcnBykHKwc4B1MHYAdjB2UHa
 AdqB2wHhQerB7IHvwfCB8QHxwfJB8sH8Qf+CAEIAwgGCAgICgglCDkIQghKCE8IWAhuCHUIh
 wiMCJEAAAAAAAACAgAAAAAAAAERAAAAAAAAAAAAAAAAAAAIkw==
END:VEVENT
BEGIN:VEVENT
CREATED:20190510T200527Z
UID:E4FD5369-A1CA-48D4-A2A0-E6BA2139C096
DTEND;TZID=America/New_York:20190512T223000
SUMMARY:C
LAST-MODIFIED:20190510T200535Z
DTSTAMP:20190510T200536Z
DTSTART;TZID=America/New_York:20190512T180000
SEQUENCE:0
END:VEVENT
BEGIN:VEVENT
CREATED:20190510T200510Z
UID:E6EFD4C7-0809-45C0-88B0-0ABAB4E2CC3C
DTEND;TZID=America/New_York:20190512T170000
SUMMARY:Steve ride Catskills
LAST-MODIFIED:20190510T200523Z
DTSTAMP:20190510T200525Z
DTSTART;TZID=America/New_York:20190511T071500
SEQUENCE:0
END:VEVENT
BEGIN:VEVENT
DTEND;TZID=GMT-0400:20190531T080400
X-APPLE-SUGGESTION-INFO-TIMESTAMP:20500501T174627
UID:2C41299F-A3D0-4F56-9C87-3A52B27A2D16
LOCATION:11371\, United States
DTSTAMP:20190502T155020Z
X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-ADDRESS="Queens, NY 11371, United
  States";X-APPLE-MAPKIT-HANDLE=CAES9gEIrk0Qzufy9ZW1gd8WGhIJa5srxyNjREARA
 AAAfMx3UsAinAEKDVVuaXRlZCBTdGF0ZXMSAlVTGghOZXcgWW9yayICTlkqBlF1ZWVuczIIT
 mV3IFlvcms6BTExMzcxchFMYUd1YXJkaWEgQWlycG9ydHILTG9uZyBJc2xhbmSKAQ1FYXN0I
 EVsbWh1cnN0igERVGhlIEZpdmUgQm9yb3VnaHOKAQZRdWVlbnOKARJMYSBHdWFyZGlhIEFpc
 nBvcnQqEUxhR3VhcmRpYSBBaXJwb3J0MhBRdWVlbnMsIE5ZIDExMzcxMg1Vbml0ZWQgU3Rhd
 GVzOC0=;X-TITLE
DESCRIPTION:Confirmation Code: 
URL;VALUE=URI:m
SEQUENCE:0
X-APPLE-SUGGESTION-INFO-OPAQUE-KEY:|
X-APPLE-SUGGESTION-INFO-UNIQUE-KEY:
 >
X-APPLE-SUGGESTION-INFO-CHANGED-FIELDS:0
SUMMARY:
LAST-MODIFIED:20190513T170253Z
DTSTART;TZID=GMT-0400:20190531T062500
CREATED:20190501T174638Z
X-APPLE-STRUCTURED-DATA:YnBsaXN0MDDUAAEAAgADAAQABQAGAQ0BDlgkdmVyc2lvblgkb
 2JqZWN0c1kkYXJjaGl2ZXJUJHRvcBIAAYagrxBYAAcACAARABIAFgAqACsALAAtAC4ALwAwA
 DEAMgAzAEsATABNAE4ATwBQAFEAUgBTAFQAYgBjAGQAZQBmAHAAcQByAHMAdAB1AHsAfAB9A
 H4AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCrALUAtgC3ALgAuQDJAMoAywDMA
 M0AzgDWANcA2ADZANoA5ADlAO0A7gDvAPUA9gD3APgA/gD/AQUBBgEHAQpVJG51bGzTAAkAC
 gALAAwADgAQV05TLmtleXNaTlMub2JqZWN0c1YkY2xhc3OhAA2AAqEAD4ADgFdfEBRTdWdnZ
 XN0aW9uc1NjaGVtYU9yZ9IACgALABMAFaEAFIAEgFbTAAkACgALABcAIAApqAAYABkAGgAbA
 BwAHQAeAB+ABYAGgAeACIAJgAqAC4AMqAAhACIAIwAkACUAJgAnACiADYAOgEqAT4BQgFGAU
 4BVgCNfEBFyZXNlcnZhdGlvblN0YXR1c15yZXNlcnZhdGlvbkZvcl5yZXNlcnZlZFRpY2tld
 FVAdHlwZV1yZXNlcnZhdGlvbklkXxAVcHJvZ3JhbU1lbWJlcnNoaXBVc2VkWXVuZGVyTmFtZ
 VhAY29udGV4dF8QJmh0dHA6Ly9zY2hlbWEub3JnL1Jlc2VydmF0aW9uQ29uZmlybWVk0wAJA
 AoACwA0AD8AKaoANQA2ADcAGwA5ADoAOwA8AD0APoAPgBCAEYAIgBKAE4AUgBWAFoAXqgBAA
 EEAQgBDAEQARQBGAEcASABJgBiAM4A0gDWANoA3gEOARoBHgEiAI18QEGRlcGFydHVyZUFpc
 nBvcnRdZGVwYXJ0dXJlVGltZVthcnJpdmFsVGltZV8QD2Fycml2YWxUZXJtaW5hbF5hcnJpd
 mFsQWlycG9ydFpvcGVyYXRlZEJ5XGZsaWdodE51bWJlcl8QEWRlcGFydHVyZVRlcm1pbmFsV
 2FpcmxpbmXTAAkACgALAFUAWwAppQBWAFcAWAAbAFqAGYAagBuACIAcpQBcAF0AXgBfAGCAH
 YAkgCWAJoAngCNTZ2VvWGlhdGFDb2RlVG5hbWVXYWRkcmVzc9MACQAKAAsAZwBrACmjABsAa
 QBqgAiAHoAfowBsAG0AboAggCGAIoAjWWxvbmdpdHVkZVhsYXRpdHVkZV8QIGh0dHA6Ly9zY
 2hlbWEub3JnL0dlb0Nvb3JkaW5hdGVzWi03My44NzE2MTdZNDAuNzc0MjUy0gB2AHcAeAB5W
 iRjbGFzc25hbWVYJGNsYXNzZXNcTlNEaWN0aW9uYXJ5ogB4AHpYTlNPYmplY3RTTEdBXxART
 GFHdWFyZGlhIEFpcnBvcnRfEBlodHRwOi8vc2NoZW1hLm9yZy9BaXJwb3J00wAJAAoACwB/A
 IYAKaYAGwCBAIIAgwCEAIWACIAogCmAKoArgCymAIcAiACJAIoAiwCMgC2ALoAvgDCAMYAyg
 CNfEA9hZGRyZXNzTG9jYWxpdHleYWRkcmVzc0NvdW50cnldYWRkcmVzc1JlZ2lvbl1zdHJlZ
 XRBZGRyZXNzWnBvc3RhbENvZGVfEB9odHRwOi8vc2NoZW1hLm9yZy9Qb3N0YWxBZGRyZXNzW
 E5ldyBZb3JrXVVuaXRlZCBTdGF0ZXNSTllfEA9IYW5nYXIgNyBDZW50ZXJVMTEzNzFfEBkyM
 DE5LTA1LTMxVDA2OjI1OjAwLTA0OjAwXxAZMjAxOS0wNS0zMVQwODowNDowMC0wNDowMF8QG
 Gh0dHA6Ly9zY2hlbWEub3JnL0ZsaWdodFEx0wAJAAoACwCeAKQAKaUAVgBXAFgAGwBagBmAG
 oAbgAiAHKUApQCmAKcAXwCpgDiAO4A8gCaAPYAj0wAJAAoACwCsALAAKaMAGwBpAGqACIAeg
 B+jAGwAsgCzgCCAOYA6gCNZLTc5LjYxMTQ2WTQzLjY4MTU4NVNZWVpfEB1QZWFyc29uIElud
 GVybmF0aW9uYWwgQWlycG9ydNMACQAKAAsAugDBACmmABsAgQCCAIMAhACFgAiAKIApgCqAK
 4AspgCHAMMAxADFAMYAx4AtgD6AP4BAgEGAQoAjV1Rvcm9udG9WQ2FuYWRhUk9OXxATNjMwM
 SBTaWx2ZXIgRGFydCBEcldMNVAgMUIy0wAJAAoACwDPANIAKaIAGwBXgAiAGqIA0wDUgESAR
 YAjXxAZaHR0cDovL3NjaGVtYS5vcmcvQWlybGluZVJBQ1M3MDFRQtMACQAKAAsA2wDfACmjA
 BsAWABXgAiAG4AaowDTAOEA1IBEgEmARYAjWkFpciBDYW5hZGHTAAkACgALAOYA6QApogAbA
 OiACIBLogDqAOuATIBNgCNcdGlja2V0ZWRTZWF0XxAYaHR0cDovL3NjaGVtYS5vcmcvVGlja
 2V00wAJAAoACwDwAPIAKaEAG4AIoQDzgE6AI18QFmh0dHA6Ly9zY2hlbWEub3JnL1NlYXRfE
 CNodHRwOi8vc2NoZW1hLm9yZy9GbGlnaHRSZXNlcnZhdGlvblZRSlgzNU3TAAkACgALAPkA+
 wApoQAbgAihAPyAUoAjXxAjaHR0cDovL3NjaGVtYS5vcmcvUHJvZ3JhbU1lbWJlcnNoaXDTA
 AkACgALAQABAgApoQAbgAihAQOAVIAjXxAYaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uXxARa
 HR0cDovL3NjaGVtYS5vcmfSAHYAdwEIAQlXTlNBcnJheaIBCAB60gB2AHcBCwEMXxATTlNNd
 XRhYmxlRGljdGlvbmFyeaMBCwB4AHpfEA9OU0tleWVkQXJjaGl2ZXLRAQ8BEFRyb290gAEAC
 AAZACIAKwA1ADoAPwDyAPgBBQENARgBHwEiASQBJwEpASsBQgFLAU4BUAFSAV8BcAFyAXQBd
 gF4AXoBfAF+AYABkQGTAZUBlwGZAZsBnQGfAaEBowG3AcYB1QHbAekCAQILAhQCPQJKAl8CY
 QJjAmUCZwJpAmsCbQJvAnECcwKIAooCjAKOApACkgKUApYCmAKaApwCngKxAr8CywLdAuwC9
 wMEAxgDIAMtAzgDOgM8Az4DQANCA00DTwNRA1MDVQNXA1kDXQNmA2sDcwOAA4cDiQOLA40Dl
 AOWA5gDmgOcA6YDrwPSA90D5wPwA/sEBAQRBBYEHwQjBDcEUwRgBG0EbwRxBHMEdQR3BHkEh
 gSIBIoEjASOBJAEkgSUBKYEtQTDBNEE3AT+BQcFFQUYBSoFMAVMBWgFgwWFBZIFnQWfBaEFo
 wWlBacFsgW0BbYFuAW6BbwFvgXLBdIF1AXWBdgF3wXhBeMF5QXnBfEF+wX/Bh8GLAY5BjsGP
 QY/BkEGQwZFBlIGVAZWBlgGWgZcBl4GYAZoBm8GcgaIBpAGnQaiBqQGpgarBq0GrwaxBs0G0
 AbUBtYG4wbqBuwG7gbwBvcG+Qb7Bv0G/wcKBxcHHAceByAHJQcnBykHKwc4B1MHYAdjB2UHa
 AdqB2wHhQerB7IHvwfCB8QHxwfJB8sH8Qf+CAEIAwgGCAgICgglCDkIQghKCE8IWAhuCHUIh
 wiMCJEAAAAAAAACAgAAAAAAAAERAAAAAAAAAAAAAAAAAAAIkw==
END:VEVENT
BEGIN:VEVENT
CREATED:20190502T121938Z
DTEND;TZID=America/New_York:20190517T220000
DTSTAMP:20190513T033146Z
DTSTART;TZID=America/New_York:20190517T190000
LAST-MODIFIED:20190510T201411Z
LOCATION:GY 10013\,
  U
SEQUENCE:0
SUMMARY:D’s gr
UID:757A5686-9135-4DF7-AD0D-7B0C92AAFB9E
URL;VALUE=URI:sms://open?message-guid=9D972892-6011-4C00-B4E0-5FFF83D0EDA
 6
X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-ADDRESS="on River Pa
 rk, New York, NY 10013, United States";X-APPLE-MAPKIT-HANDLE=CAEShwIIrk0
 QwOWWiK7aq6yhARoSCVHEomkyXERAEQAAwB0HgVLAIpYBCg1Vbml0ZWQgU3RhdGVzEgJVUxo
 ITmV3IFlvcmsiAk5ZKghOZXcgWW9yazIITmV3IFlvcms6BTEwMDEzQglNYW5oYXR0YW5SEUh
 1ZHNvbiBSaXZlciBQYXJrWgIyNWIHUGllciAyNXIHUGllciAyNXIJTWFuaGF0dGFuigEMTm9
 ydGggSHVkc29uigEJTWFuaGF0dGFuKgtHcmFuZCBCYW5rczIHUGllciAyNTIRSHVkc29uIFJ
 pdmVyIFBhcmsyEk5ldyBZb3JrLCBOWSAxMDAxMzINVW5pdGVkIFN0YXRlcw==;X-APPLE-RA
 DIUS=141.523890040771;X-APPLE-REFERENCEFRAME=1;X-TITLE=s:geo:4
 0.720288,-74.016059
END:VEVENT
BEGIN:VTIMEZONE
TZID:GMT-0400
X-LIC-LOCATION:GMT-0400
BEGIN:STANDARD
DTSTART:18000101T000000
RDATE:18000101T000000
TZNAME:-04
TZOFFSETFROM:-0400
TZOFFSETTO:-0400
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:America/New_York
X-LIC-LOCATION:America/New_York
BEGIN:STANDARD
DTSTART:18831118T120358
RDATE:18831118T120358
TZNAME:EST
TZOFFSETFROM:-045602
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19180331T020000
RRULE:FREQ=YEARLY;UNTIL=19190330T070000Z;BYMONTH=3;BYDAY=-1SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19181027T020000
RRULE:FREQ=YEARLY;UNTIL=19191026T060000Z;BYMONTH=10;BYDAY=-1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:STANDARD
DTSTART:19200101T000000
RDATE:19200101T000000
RDATE:19420101T000000
RDATE:19460101T000000
RDATE:19670101T000000
TZNAME:EST
TZOFFSETFROM:-0500
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19200328T020000
RDATE:19200328T020000
RDATE:19740106T020000
RDATE:19750223T020000
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19201031T020000
RDATE:19201031T020000
RDATE:19450930T020000
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19210424T020000
RRULE:FREQ=YEARLY;UNTIL=19410427T070000Z;BYMONTH=4;BYDAY=-1SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19210925T020000
RRULE:FREQ=YEARLY;UNTIL=19410928T060000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19420209T020000
RDATE:19420209T020000
TZNAME:EWT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19450814T190000
RDATE:19450814T190000
TZNAME:EPT
TZOFFSETFROM:-0400
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19460428T020000
RRULE:FREQ=YEARLY;UNTIL=19660424T070000Z;BYMONTH=4;BYDAY=-1SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19460929T020000
RRULE:FREQ=YEARLY;UNTIL=19540926T060000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:STANDARD
DTSTART:19551030T020000
RRULE:FREQ=YEARLY;UNTIL=19661030T060000Z;BYMONTH=10;BYDAY=-1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19670430T020000
RRULE:FREQ=YEARLY;UNTIL=19730429T070000Z;BYMONTH=4;BYDAY=-1SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;UNTIL=20061029T060000Z;BYMONTH=10;BYDAY=-1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19760425T020000
RRULE:FREQ=YEARLY;UNTIL=19860427T070000Z;BYMONTH=4;BYDAY=-1SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19870405T020000
RRULE:FREQ=YEARLY;UNTIL=20060402T070000Z;BYMONTH=4;BYDAY=1SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:20070311T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:20071104T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
Aupajo commented 5 years ago

Thanks, @steveb85! I do get an error from this iCal feed:

RuntimeError: Invalid property value ";VALUE=URI;X-ADDRESS=\"…

That error I noticed when I was testing this the other day (#26).

However, that error is different from the one you mentioned initially:

RiCal::InvalidTimezoneIdentifier - "GMT-0400" is not known to the tzinfo database

Both of these issues are looking increasingly like issues with RiCal, not Almanack. However, the RiCal project looks dead. I'm going to reach out to the author to see if he will accept a patch to RiCal, and investigate to see if there's some way I can patch this in Almanack if not.

steveb85 commented 5 years ago

thanks so much @Aupajo that is a huge help!

Aupajo commented 5 years ago

I sent a message via Twitter yesterday: https://twitter.com/aupajo/status/1128161247701098496?s=20 I haven't heard back, and I'm not sure I will.

Moving forward, I'll assume that RiCal is no longer being maintained, and that I'm better off trying to patch this in Almanack.

@steveb85 Would you be able to help me isolate the GMT-0400 issue? Here's what I've been doing:

curl https://SOME-ICLOUD-FEED > feed.ical
ruby -r ri_cal -e "RiCal.parse_string(File.read('feed.ical'))"

If I can get a iCalendar with the RiCal::InvalidTimezoneIdentifier exception raised, I can hopefully track down what's happening and prepare a fix.

steveb85 commented 5 years ago

@Aupajo of course, I'll shoot you a link via email.

Steve

Aupajo commented 5 years ago

@steveb85 I just tried and had no issues parsing the iCal feed you sent in your email. I think I need a bit more information about your system:

  1. What OS and version are you using?
  2. What version of Ruby do you have installed? (ruby --version)

Update: Just re-reading your error above, it looks like you're using macOS, with RBEnv running Ruby 2.3.0? Are you running macOS Mojave (10.14)?

steveb85 commented 5 years ago

@Aupajo Yes running Mojave 10.14.4, last week i changed to Ruby 2.6.3 on RBEnv 1.1.2

steveb85 commented 5 years ago

@Aupajo I was reading through the ri_cal documents and found this

When RiCal imports an icalendar data stream produced by another library or application, such as Apple's ical.app, or Google mail, it will be recognized as not being a non-tzinfo calendar, and any tzids will be resolved using the included VTIMEZONEs. Note that these calendars may well use tzids which are not recognizable by the tzinfo gem or by the similar code provided by ActiveSupport, so care is needed in using them.

It lead me to examine some things more closely, and found that the calendar that was causing the problem had two flights in it, which were registered with a different timezone reference. - They were automatically added, not input by me) when i corrected this, everything started working.

thanks for your support on this.

Aupajo commented 5 years ago

Great! Thanks, @steveb85. I'm glad your issue was resolved. Thank you for reporting it here, too – I can help steer anyone else affected away from it, too.

steveb85 commented 5 years ago

@Aupajo this popped up again today, after i automatically added some flights to the calendar. The flights came in with TZ indicated in GMT which shouldn't be a problem, however I think the problem is that it left in one time zone and landed in another. I've manually edited it to be both in the same timezone, and will just see if that corrects it.

steveb85 commented 5 years ago

Interestingly, i had added some events that were over 24 hours, and that didn't seem to be a problem. (all day problem from earlier)

Aupajo commented 4 years ago

Possible fix for this in #42.