OpenXE/classes/Modules/GoogleCalendar/Client/GoogleCalendarClientInterface.php
2021-05-21 08:49:41 +02:00

143 lines
3.7 KiB
PHP

<?php
declare(strict_types=1);
namespace Xentral\Modules\GoogleCalendar\Client;
use DateTimeInterface;
use Xentral\Modules\GoogleApi\Data\GoogleAccountData;
use Xentral\Modules\GoogleCalendar\Data\GoogleCalendarColorCollection;
use Xentral\Modules\GoogleCalendar\Data\GoogleCalendarEventData;
use Xentral\Modules\GoogleCalendar\Data\GoogleCalendarListItem;
use Xentral\Modules\GoogleCalendar\Exception\GoogleCalendarApiException;
interface GoogleCalendarClientInterface
{
/** @var string SENDUPDATES_DEFAULT */
public const SENDUPDATES_DEFAULT = 'default';
/** @var string SENDUPDATES_ALL */
public const SENDUPDATES_ALL = 'all';
/** @var string SENDUPDATES_EXTERNALONLY */
public const SENDUPDATES_EXTERNALONLY = 'externalOnly';
/** @var string SENDUPDATES_NONE */
public const SENDUPDATES_NONE = 'none';
/**
* @return GoogleAccountData
*/
public function getAccount(): GoogleAccountData;
/**
* @param array $filters
*
* @return GoogleCalendarListItem[]
*/
public function getCalendarList(array $filters = []): array;
/**
* @return GoogleCalendarListItem
*/
public function getPrimaryCalendar(): GoogleCalendarListItem;
/**
* @param string $calendar
* @param DateTimeInterface $modifiedSince
*
* @return GoogleCalendarEventData[]
*/
public function getModifiedEvents(string $calendar, DateTimeInterface $modifiedSince): array;
/**
* @param string $calendar
* @param DateTimeInterface $from
* @param DateTimeInterface $to
*
* @return GoogleCalendarEventData[]
*/
public function getAbsoluteEvents(string $calendar, DateTimeInterface $from, DateTimeInterface $to): array;
/**
* @param string $eventId
*
* @throws GoogleCalendarApiException
*
* @return GoogleCalendarEventData
*/
public function getEvent($eventId): GoogleCalendarEventData;
/**
* @param string $calendar calendar identifier
* @param array $filters
*
* @return GoogleCalendarEventData[]
*/
public function getEventList(string $calendar, $filters = []): array;
/**
* @param GoogleCalendarEventData $event
* @param string $sendUpdates
*
* @return GoogleCalendarEventData
*/
public function insertEvent(
GoogleCalendarEventData $event,
$sendUpdates = self::SENDUPDATES_DEFAULT
): GoogleCalendarEventData;
/**
* @param GoogleCalendarEventData $event
* @param string $sendUpdates
*
* @return GoogleCalendarEventData
*/
public function updateEvent(
GoogleCalendarEventData $event,
$sendUpdates = self::SENDUPDATES_DEFAULT
): GoogleCalendarEventData;
/**
* @param GoogleCalendarEventData $event
* @param string $targetCalendar
* @param string $sendUpdates
*
* @return GoogleCalendarEventData
*/
public function moveEvent(
GoogleCalendarEventData $event,
$targetCalendar,
$sendUpdates = self::SENDUPDATES_DEFAULT
): GoogleCalendarEventData;
/**
* @param string $eventId
* @param string $sendUpdates
*
* @return bool
*/
public function deleteEvent(
$eventId,
$sendUpdates = self::SENDUPDATES_DEFAULT
): bool;
/**
* @param string $calendar
*
* @return bool
*/
public function canAccessCalendar(string $calendar): bool;
/**
* @return array
*/
public function getUserSettings(): array;
/**
* @return GoogleCalendarColorCollection
*/
public function getAvailableColors(): GoogleCalendarColorCollection;
}