diff options
author | Julius Härtl <jus@bitgrid.net> | 2020-11-06 12:36:32 +0300 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2020-11-08 12:08:50 +0300 |
commit | 74bdf6d216060da02b6764e4de91b9db09c24fb8 (patch) | |
tree | 70e92270c57578337a17eeea268eee1a1c80d69c /lib/Capabilities.php | |
parent | 89f8bbeba6abc834dd54efc109d0ec4ac26b9b66 (diff) |
Move storing capabilities to distributed cache
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'lib/Capabilities.php')
-rw-r--r-- | lib/Capabilities.php | 88 |
1 files changed, 28 insertions, 60 deletions
diff --git a/lib/Capabilities.php b/lib/Capabilities.php index 51e46e9e..efc412ba 100644 --- a/lib/Capabilities.php +++ b/lib/Capabilities.php @@ -23,15 +23,9 @@ namespace OCA\Richdocuments; -use OCP\AppFramework\Utility\ITimeFactory; +use OCA\Richdocuments\Service\CapabilitiesService; use OCP\Capabilities\ICapability; -use OCP\Files\IAppData; -use OCP\Files\NotFoundException; -use OCP\Files\SimpleFS\ISimpleFolder; -use OCP\Http\Client\IClientService; -use OCP\IConfig; use OCP\IL10N; -use OCP\IURLGenerator; class Capabilities implements ICapability { @@ -77,69 +71,43 @@ class Capabilities implements ICapability { 'text/spreadsheet' ]; - /** @var ISimpleFolder */ - private $appData; - /** @var IL10N */ private $l10n; /** @var AppConfig */ private $config; + /** @var CapabilitiesService */ + private $capabilitiesService; + + private $capabilities = null; - /** - * Capabilities constructor. - * - * @param IAppData $appData - * @throws \OCP\Files\NotPermittedException - */ - public function __construct(IAppData $appData, IL10N $l10n, AppConfig $config) { + public function __construct(IL10N $l10n, AppConfig $config, CapabilitiesService $capabilitiesService) { $this->l10n = $l10n; $this->config = $config; - try { - $this->appData = $appData->getFolder('richdocuments'); - } catch (NotFoundException $e) { - $this->appData = $appData->newFolder('richdocuments'); - } + $this->capabilitiesService = $capabilitiesService; } public function getCapabilities() { - $collaboraCapabilities = $this->getCollaboraCapabilities(); - return [ - 'richdocuments' => [ - 'mimetypes' => self::MIMETYPES, - 'mimetypesNoDefaultOpen' => self::MIMETYPES_OPTIONAL, - 'collabora' => $collaboraCapabilities, - 'direct_editing' => isset($collaboraCapabilities['hasMobileSupport']) ? : false, - 'templates' => isset($collaboraCapabilities['hasTemplateSaveAs']) || isset($collaboraCapabilities['hasTemplateSource']) ? : false, - 'productName' => isset($collaboraCapabilities['productName']) ? $collaboraCapabilities['productName'] : $this->l10n->t('Collabora Online'), - 'config' => [ - 'wopi_url' => $this->config->getAppValue('wopi_url'), - 'public_wopi_url' => $this->config->getAppValue('public_wopi_url'), - 'disable_certificate_verification' => $this->config->getAppValue('disable_certificate_verification'), - 'edit_groups' => $this->config->getAppValue('edit_groups'), - 'use_groups' => $this->config->getAppValue('use_groups'), - 'doc_format' => $this->config->getAppValue('doc_format'), - ] - ], - ]; - } - - /** - * TODO: use CapabilitiesService - * @return array - * @throws \OCP\Files\NotPermittedException - */ - private function getCollaboraCapabilities() { - try { - $file = $this->appData->getFile('capabilities.json'); - $decodedFile = \json_decode($file->getContent(), true); - } catch (NotFoundException $e) { - return []; - } - - if (!is_array($decodedFile)) { - return []; + if (!$this->capabilities) { + $collaboraCapabilities = $this->capabilitiesService->getCapabilities(); + $this->capabilities = [ + 'richdocuments' => [ + 'mimetypes' => self::MIMETYPES, + 'mimetypesNoDefaultOpen' => self::MIMETYPES_OPTIONAL, + 'collabora' => $collaboraCapabilities, + 'direct_editing' => isset($collaboraCapabilities['hasMobileSupport']) ?: false, + 'templates' => isset($collaboraCapabilities['hasTemplateSaveAs']) || isset($collaboraCapabilities['hasTemplateSource']) ?: false, + 'productName' => isset($collaboraCapabilities['productName']) ? $collaboraCapabilities['productName'] : $this->l10n->t('Collabora Online'), + 'config' => [ + 'wopi_url' => $this->config->getAppValue('wopi_url'), + 'public_wopi_url' => $this->config->getAppValue('public_wopi_url'), + 'disable_certificate_verification' => $this->config->getAppValue('disable_certificate_verification'), + 'edit_groups' => $this->config->getAppValue('edit_groups'), + 'use_groups' => $this->config->getAppValue('use_groups'), + 'doc_format' => $this->config->getAppValue('doc_format'), + ] + ], + ]; } - - return $decodedFile; + return $this->capabilities; } } |