diff --git a/source/sources/ics_feed.php b/source/sources/ics_feed.php index 711c824..fb1b7b5 100644 --- a/source/sources/ics_feed.php +++ b/source/sources/ics_feed.php @@ -159,10 +159,32 @@ class class_source_ics_feed case 200: { $ics = $response->getBody(); - $vcalendar = \davina\helpers\ics\vcalendar_decode($ics); - $calendar = $this->vcalendar_to_calendar($vcalendar, $realm_name); - $calendar_raw = \davina\model\calendar_to_raw($calendar); - return $calendar_raw; + try + { + $vcalendar = \davina\helpers\ics\vcalendar_decode($ics); + } + catch (\Throwable $throwable) + { + \error_log( + \davina\helpers\string_\coin( + 'could not parse ics: {{reason}}', + [ + 'reason' => \strval($throwable), + ] + ) + ); + $valendar = null; + } + if ($vcalendar === null) + { + throw (new \Exception('could not parse ics')); + } + else + { + $calendar = $this->vcalendar_to_calendar($vcalendar, $realm_name); + $calendar_raw = \davina\model\calendar_to_raw($calendar); + return $calendar_raw; + } break; } default: