, * protocols: array * }>, * version: string * } * } * @throws OCMArgumentException */ public function getCapabilities() { $url = $this->urlGenerator->linkToRouteAbsolute('cloud_federation_api.requesthandlercontroller.addShare'); $this->provider->setEnabled(true); $this->provider->setApiVersion(self::API_VERSION); $pos = strrpos($url, '/'); if ($pos === false) { throw new OCMArgumentException('generated route should contains a slash character'); } $this->provider->setEndPoint(substr($url, 0, $pos)); $resource = $this->provider->createNewResourceType(); $resource->setName('file') ->setShareTypes(['user', 'group']) ->setProtocols(['webdav' => '/public.php/webdav/']); $this->provider->addResourceType($resource); // Adding a public key to the ocm discovery try { if (!$this->appConfig->getValueBool('core', OCMSignatoryManager::APPCONFIG_SIGN_DISABLED, lazy: true)) { /** * @experimental 31.0.0 * @psalm-suppress UndefinedInterfaceMethod */ $this->provider->setSignatory($this->ocmSignatoryManager->getLocalSignatory()); } else { $this->logger->debug('ocm public key feature disabled'); } } catch (SignatoryException|IdentityNotFoundException $e) { $this->logger->warning('cannot generate local signatory', ['exception' => $e]); } return ['ocm' => json_decode(json_encode($this->provider->jsonSerialize()), true)]; } }