Browse Source

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 <opensource@fthiessen.de>
pull/51946/head
Ferdinand Thiessen 8 months ago
parent
commit
63052522a2
No known key found for this signature in database GPG Key ID: 45FAE7268762B400
  1. 13
      apps/cloud_federation_api/lib/Capabilities.php

13
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()];
}
}
Loading…
Cancel
Save