makeUrl("{$this->username}"); return parent::getCalendarsInfo($url); } public function getCalendar($calendarId) { $url = $this->buildUrlFrom($calendarId); return parent::getCalendarInfo($url); } public function getEvents($calendarId, $dateRange = []) { $url = $this->buildUrlFrom($calendarId); if (!str_contains($url, '/events')) { $url .= '/events'; } return parent::getEventsFrom($url, $dateRange); } public function getEvent($uid) { $url = $this->buildUrlFrom($uid); return parent::getEventFrom($url); } public function addEvent($calendarId, $payload) { $url = $this->buildUrlFrom($calendarId); if (str_contains($url, '/events')) { $url = str_replace('/events', '', $url); } return parent::addEventTo($url . '/events', $payload); } public function deleteEvent($url) { $url = $this->buildUrlFrom($url); if (str_contains($url, '/events')) { $url = str_replace('/events', '', $url); } return parent::deleteEvent($url); } protected function getAuthCredential() { return 'Bearer ' . $this->password; } protected function buildUrlFrom($calendarId) { if (str_contains($calendarId, 'caldav')) { $calendarId = trim($calendarId, '/'); $calendarId = str_replace('caldav/v2', '', $calendarId); $url = $this->makeUrl($calendarId); } else { $url = $this->makeUrl($calendarId); } return $url; } }