diff options
Diffstat (limited to 'apps/files/lib/Controller/DirectEditingViewController.php')
-rw-r--r-- | apps/files/lib/Controller/DirectEditingViewController.php | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/apps/files/lib/Controller/DirectEditingViewController.php b/apps/files/lib/Controller/DirectEditingViewController.php new file mode 100644 index 00000000000..b13e68f7766 --- /dev/null +++ b/apps/files/lib/Controller/DirectEditingViewController.php @@ -0,0 +1,51 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Files\Controller; + +use Exception; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\Attribute\NoCSRFRequired; +use OCP\AppFramework\Http\Attribute\OpenAPI; +use OCP\AppFramework\Http\Attribute\PublicPage; +use OCP\AppFramework\Http\Attribute\UseSession; +use OCP\AppFramework\Http\NotFoundResponse; +use OCP\AppFramework\Http\Response; +use OCP\DirectEditing\IManager; +use OCP\DirectEditing\RegisterDirectEditorEvent; +use OCP\EventDispatcher\IEventDispatcher; +use OCP\IRequest; +use Psr\Log\LoggerInterface; + +#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)] +class DirectEditingViewController extends Controller { + public function __construct( + $appName, + IRequest $request, + private IEventDispatcher $eventDispatcher, + private IManager $directEditingManager, + private LoggerInterface $logger, + ) { + parent::__construct($appName, $request); + } + + /** + * @param string $token + * @return Response + */ + #[PublicPage] + #[NoCSRFRequired] + #[UseSession] + public function edit(string $token): Response { + $this->eventDispatcher->dispatchTyped(new RegisterDirectEditorEvent($this->directEditingManager)); + try { + return $this->directEditingManager->edit($token); + } catch (Exception $e) { + $this->logger->error($e->getMessage(), ['exception' => $e]); + return new NotFoundResponse(); + } + } +} |