1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
- declare(strict_types=1);
- /**
- * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
- namespace OCA\DAV\Controller;
- use OCA\DAV\AppInfo\Application;
- use OCA\DAV\CalDAV\UpcomingEvent;
- use OCA\DAV\CalDAV\UpcomingEventsService;
- use OCA\DAV\ResponseDefinitions;
- use OCP\AppFramework\Http;
- use OCP\AppFramework\Http\Attribute\NoAdminRequired;
- use OCP\AppFramework\Http\DataResponse;
- use OCP\AppFramework\OCSController;
- use OCP\IRequest;
- /**
- * @psalm-import-type DAVUpcomingEvent from ResponseDefinitions
- */
- class UpcomingEventsController extends OCSController {
- private ?string $userId;
- private UpcomingEventsService $service;
- public function __construct(
- IRequest $request,
- ?string $userId,
- UpcomingEventsService $service) {
- parent::__construct(Application::APP_ID, $request);
- $this->userId = $userId;
- $this->service = $service;
- }
- /**
- * Get information about upcoming events
- *
- * @param string|null $location location/URL to filter by
- * @return DataResponse<Http::STATUS_OK, array{events: DAVUpcomingEvent[]}, array{}>|DataResponse<Http::STATUS_UNAUTHORIZED, null, array{}>
- *
- * 200: Upcoming events
- * 401: When not authenticated
- */
- #[NoAdminRequired]
- public function getEvents(?string $location = null): DataResponse {
- if ($this->userId === null) {
- return new DataResponse(null, Http::STATUS_UNAUTHORIZED);
- }
- return new DataResponse([
- 'events' => array_map(fn (UpcomingEvent $e) => $e->jsonSerialize(), $this->service->getEvents(
- $this->userId,
- $location,
- )),
- ]);
- }
- }
|