From fc445a2eaa2f93ae7f55b3af8800a87a69480a66 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 12 Oct 2023 12:25:54 +0200 Subject: [PATCH] feat(OCM): Add a way for apps to create a new IOCMResource Signed-off-by: Joas Schilling --- apps/cloud_federation_api/lib/Capabilities.php | 6 ++---- lib/private/OCM/Model/OCMProvider.php | 8 ++++++++ lib/public/OCM/IOCMProvider.php | 7 +++++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/apps/cloud_federation_api/lib/Capabilities.php b/apps/cloud_federation_api/lib/Capabilities.php index cd44d13117a..9b04145caa2 100644 --- a/apps/cloud_federation_api/lib/Capabilities.php +++ b/apps/cloud_federation_api/lib/Capabilities.php @@ -28,14 +28,12 @@ declare(strict_types=1); namespace OCA\CloudFederationAPI; -use OC\OCM\Model\OCMResource; use OCP\Capabilities\ICapability; use OCP\IURLGenerator; use OCP\OCM\Exceptions\OCMArgumentException; use OCP\OCM\IOCMProvider; class Capabilities implements ICapability { - public const API_VERSION = '1.0-proposal1'; public function __construct( @@ -74,12 +72,12 @@ class Capabilities implements ICapability { $this->provider->setEndPoint(substr($url, 0, $pos)); - $resource = new OCMResource(); + $resource = $this->provider->createNewResourceType(); $resource->setName('file') ->setShareTypes(['user', 'group']) ->setProtocols(['webdav' => '/public.php/webdav/']); - $this->provider->setResourceTypes([$resource]); + $this->provider->addResourceType($resource); return ['ocm' => $this->provider->jsonSerialize()]; } diff --git a/lib/private/OCM/Model/OCMProvider.php b/lib/private/OCM/Model/OCMProvider.php index 1a8d943f79f..a72dd282dad 100644 --- a/lib/private/OCM/Model/OCMProvider.php +++ b/lib/private/OCM/Model/OCMProvider.php @@ -95,6 +95,14 @@ class OCMProvider implements IOCMProvider { return $this->endPoint; } + /** + * create a new resource to later add it with {@see IOCMProvider::addResourceType()} + * @return IOCMResource + */ + public function createNewResourceType(): IOCMResource { + return new OCMResource(); + } + /** * @param IOCMResource $resource * diff --git a/lib/public/OCM/IOCMProvider.php b/lib/public/OCM/IOCMProvider.php index 6eebf13a589..6df7eed370c 100644 --- a/lib/public/OCM/IOCMProvider.php +++ b/lib/public/OCM/IOCMProvider.php @@ -90,6 +90,13 @@ interface IOCMProvider extends JsonSerializable { */ public function getEndPoint(): string; + /** + * create a new resource to later add it with {@see addResourceType()} + * @return IOCMResource + * @since 28.0.0 + */ + public function createNewResourceType(): IOCMResource; + /** * add a single resource to the object *