aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2025-04-04 17:07:24 +0200
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>2025-04-08 08:45:03 +0000
commit9ffd7de4937201251ee4cb988efb36886c784583 (patch)
treefddf89e5261c11183c3b893cc36d7d697fb954d9
parentb8e87483f0ea627301b985b2f4f8e27440299a19 (diff)
downloadnextcloud-server-backport/51946/stable31.tar.gz
nextcloud-server-backport/51946/stable31.zip
perf(cloud_federation_api): only provide capabilities if neededbackport/51946/stable31
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 <opensource@fthiessen.de>
-rw-r--r--apps/cloud_federation_api/lib/Capabilities.php13
1 files changed, 6 insertions, 7 deletions
diff --git a/apps/cloud_federation_api/lib/Capabilities.php b/apps/cloud_federation_api/lib/Capabilities.php
index 8957fb8b9d8..0348f6e7c11 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\IdentityNotFoundException;
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 @@ class Capabilities implements ICapability {
*/
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 @@ class Capabilities implements ICapability {
$this->logger->warning('cannot generate local signatory', ['exception' => $e]);
}
- return ['ocm' => json_decode(json_encode($this->provider->jsonSerialize()), true)];
+ return ['ocm' => $this->provider->jsonSerialize()];
}
}