%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/apps/app_api/lib/Controller/ |
Current File : //www/varak.net/nextcloud.varak.net/apps/app_api/lib/Controller/OCSExAppController.php |
<?php declare(strict_types=1); namespace OCA\AppAPI\Controller; use OCA\AppAPI\AppInfo\Application; use OCA\AppAPI\Service\AppAPIService; use OCA\AppAPI\Service\ExAppService; use OCP\AppFramework\Http; use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCS\OCSBadRequestException; use OCP\AppFramework\OCSController; use OCP\IRequest; use OCP\IURLGenerator; class OCSExAppController extends OCSController { protected $request; public function __construct( IRequest $request, private readonly AppAPIService $service, private readonly ExAppService $exAppService, private readonly IURLGenerator $urlGenerator, ) { parent::__construct(Application::APP_ID, $request); $this->request = $request; } #[NoCSRFRequired] public function getExAppsList(string $list = 'enabled'): DataResponse { if (!in_array($list, ['all', 'enabled'])) { return new DataResponse([], Http::STATUS_BAD_REQUEST); } return new DataResponse($this->exAppService->getExAppsList($list), Http::STATUS_OK); } #[NoCSRFRequired] public function getExApp(string $appId): DataResponse { $exApp = $this->exAppService->getExApp($appId); if (!$exApp) { return new DataResponse([], Http::STATUS_NOT_FOUND); } return new DataResponse($this->exAppService->formatExAppInfo($exApp), Http::STATUS_OK); } #[NoCSRFRequired] public function getNextcloudUrl(): DataResponse { return new DataResponse([ 'base_url' => $this->urlGenerator->getBaseUrl(), ], Http::STATUS_OK); } /** * @throws OCSBadRequestException */ #[NoCSRFRequired] public function setExAppEnabled(string $appId, int $enabled): DataResponse { $exApp = $this->exAppService->getExApp($appId); if (!$exApp) { return new DataResponse([], Http::STATUS_NOT_FOUND); } if (filter_var($enabled, FILTER_VALIDATE_BOOL)) { if ($exApp->getEnabled()) { throw new OCSBadRequestException('ExApp already enabled'); } if (!$this->service->enableExApp($exApp)) { throw new OCSBadRequestException('Failed to enable ExApp'); } } else { if (!$exApp->getEnabled()) { throw new OCSBadRequestException('ExApp already disabled'); } if (!$this->service->disableExApp($exApp)) { throw new OCSBadRequestException('Failed to disable ExApp'); } } return new DataResponse(); } #[NoCSRFRequired] public function requestToExApp( string $appId, string $route, ?string $userId = null, string $method = 'POST', array $params = [], array $options = [], ): DataResponse { $exApp = $this->exAppService->getExApp($appId); if ($exApp === null) { return new DataResponse(['error' => sprintf('ExApp `%s` not found', $appId)]); } $response = $this->service->requestToExApp($exApp, $route, $userId, $method, $params, $options, $this->request); if (is_array($response) && isset($response['error'])) { return new DataResponse($response, Http::STATUS_BAD_REQUEST); } return new DataResponse([ 'status_code' => $response->getStatusCode(), 'headers' => $response->getHeaders(), 'body' => $response->getBody(), ]); } /** * TODO: remove later * * @deprecated since AppAPI 3.0.0 */ #[NoCSRFRequired] public function aeRequestToExApp( string $appId, string $route, ?string $userId = null, string $method = 'POST', array $params = [], array $options = [], ): DataResponse { $exApp = $this->exAppService->getExApp($appId); if ($exApp === null) { return new DataResponse(['error' => sprintf('ExApp `%s` not found', $appId)]); } $response = $this->service->requestToExApp($exApp, $route, $userId, $method, $params, $options, $this->request); if (is_array($response) && isset($response['error'])) { return new DataResponse($response, Http::STATUS_BAD_REQUEST); } return new DataResponse([ 'status_code' => $response->getStatusCode(), 'headers' => $response->getHeaders(), 'body' => $response->getBody(), ]); } }