diff options
Diffstat (limited to 'core/Controller/OCMController.php')
-rw-r--r-- | core/Controller/OCMController.php | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/core/Controller/OCMController.php b/core/Controller/OCMController.php index f8110278b20..2d3b99f431d 100644 --- a/core/Controller/OCMController.php +++ b/core/Controller/OCMController.php @@ -10,12 +10,16 @@ declare(strict_types=1); namespace OC\Core\Controller; use Exception; +use OCA\CloudFederationAPI\Capabilities; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\Attribute\FrontpageRoute; +use OCP\AppFramework\Http\Attribute\NoCSRFRequired; +use OCP\AppFramework\Http\Attribute\OpenAPI; +use OCP\AppFramework\Http\Attribute\PublicPage; use OCP\AppFramework\Http\DataResponse; use OCP\Capabilities\ICapability; -use OCP\IConfig; +use OCP\IAppConfig; use OCP\IRequest; use OCP\Server; use Psr\Container\ContainerExceptionInterface; @@ -29,8 +33,8 @@ use Psr\Log\LoggerInterface; class OCMController extends Controller { public function __construct( IRequest $request, - private IConfig $config, - private LoggerInterface $logger + private readonly IAppConfig $appConfig, + private LoggerInterface $logger, ) { parent::__construct('core', $request); } @@ -39,23 +43,24 @@ class OCMController extends Controller { * generate a OCMProvider with local data and send it as DataResponse. * This replaces the old PHP file ocm-provider/index.php * - * @PublicPage - * @NoCSRFRequired * @psalm-suppress MoreSpecificReturnType * @psalm-suppress LessSpecificReturnStatement - * @return DataResponse<Http::STATUS_OK, array{enabled: bool, apiVersion: string, endPoint: string, resourceTypes: array{name: string, shareTypes: string[], protocols: array{webdav: string}}[]}, array{X-NEXTCLOUD-OCM-PROVIDERS: true, Content-Type: 'application/json'}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}> + * @return DataResponse<Http::STATUS_OK, array{enabled: bool, apiVersion: string, endPoint: string, resourceTypes: list<array{name: string, shareTypes: list<string>, protocols: array{webdav: string}}>}, array{X-NEXTCLOUD-OCM-PROVIDERS: true, Content-Type: 'application/json'}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}> * * 200: OCM Provider details returned * 500: OCM not supported */ + #[PublicPage] + #[NoCSRFRequired] #[FrontpageRoute(verb: 'GET', url: '/ocm-provider/')] + #[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)] public function discovery(): DataResponse { try { $cap = Server::get( - $this->config->getAppValue( - 'core', - 'ocm_providers', - '\OCA\CloudFederationAPI\Capabilities' + $this->appConfig->getValueString( + 'core', 'ocm_providers', + Capabilities::class, + lazy: true ) ); |