From 9ffd7de4937201251ee4cb988efb36886c784583 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Fri, 4 Apr 2025 17:07:24 +0200 Subject: [PATCH] perf(cloud_federation_api): only provide capabilities if needed The capabilities can be quite expensive (e.g. on ARM board it takes 1s per request only for the capabilities). Also they are not used by the webui so they should not be included in initial state. Signed-off-by: Ferdinand Thiessen --- apps/cloud_federation_api/lib/Capabilities.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/apps/cloud_federation_api/lib/Capabilities.php b/apps/cloud_federation_api/lib/Capabilities.php index 8957fb8b9d8db..0348f6e7c110c 100644 --- a/apps/cloud_federation_api/lib/Capabilities.php +++ b/apps/cloud_federation_api/lib/Capabilities.php @@ -12,13 +12,14 @@ use NCU\Security\Signature\Exceptions\SignatoryException; use OC\OCM\OCMSignatoryManager; use OCP\Capabilities\ICapability; +use OCP\Capabilities\IInitialStateExcludedCapability; use OCP\IAppConfig; use OCP\IURLGenerator; use OCP\OCM\Exceptions\OCMArgumentException; use OCP\OCM\IOCMProvider; use Psr\Log\LoggerInterface; -class Capabilities implements ICapability { +class Capabilities implements ICapability, IInitialStateExcludedCapability { public const API_VERSION = '1.1'; // informative, real version. public function __construct( @@ -54,15 +55,13 @@ public function __construct( */ 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'); + throw new OCMArgumentException('generated route should contain a slash character'); } + $this->provider->setEnabled(true); + $this->provider->setApiVersion(self::API_VERSION); $this->provider->setEndPoint(substr($url, 0, $pos)); $resource = $this->provider->createNewResourceType(); @@ -87,6 +86,6 @@ public function getCapabilities() { $this->logger->warning('cannot generate local signatory', ['exception' => $e]); } - return ['ocm' => json_decode(json_encode($this->provider->jsonSerialize()), true)]; + return ['ocm' => $this->provider->jsonSerialize()]; } }