diff options
author | Bjoern Schiessle <bjoern@schiessle.org> | 2018-05-28 17:13:19 +0200 |
---|---|---|
committer | Bjoern Schiessle <bjoern@schiessle.org> | 2018-07-02 11:29:28 +0200 |
commit | bbce8c3ea1c73726f233961fe7bdb16b8a08bb67 (patch) | |
tree | e3f345e7e2e6f5d21947013331af1f83593fb20a /apps/cloud_federation_api | |
parent | daba042d269bfd701c78e014c0ad7794975d2133 (diff) | |
download | nextcloud-server-bbce8c3ea1c73726f233961fe7bdb16b8a08bb67.tar.gz nextcloud-server-bbce8c3ea1c73726f233961fe7bdb16b8a08bb67.zip |
adjust to latest api version
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
Diffstat (limited to 'apps/cloud_federation_api')
-rw-r--r-- | apps/cloud_federation_api/lib/Capabilities.php | 6 | ||||
-rw-r--r-- | apps/cloud_federation_api/lib/Controller/RequestHandlerController.php | 31 |
2 files changed, 21 insertions, 16 deletions
diff --git a/apps/cloud_federation_api/lib/Capabilities.php b/apps/cloud_federation_api/lib/Capabilities.php index 15417f85222..88b8c7b391b 100644 --- a/apps/cloud_federation_api/lib/Capabilities.php +++ b/apps/cloud_federation_api/lib/Capabilities.php @@ -46,9 +46,9 @@ class Capabilities implements ICapability { $capabilities = ['ocm' => [ 'enabled' => true, - 'api-version' => '1.0-proposal1', - 'end-point' => substr($url, 0, strrpos($url, '/')), - 'share-types' => ['file'], + 'apiVersion' => '1.0-proposal1', + 'endPoint' => substr($url, 0, strrpos($url, '/')), + 'shareTypes' => ['file'], 'protocol' => [ 'webdav' => '/public.php/webdav/', ] diff --git a/apps/cloud_federation_api/lib/Controller/RequestHandlerController.php b/apps/cloud_federation_api/lib/Controller/RequestHandlerController.php index 319380ec3c3..5ec1496ce6b 100644 --- a/apps/cloud_federation_api/lib/Controller/RequestHandlerController.php +++ b/apps/cloud_federation_api/lib/Controller/RequestHandlerController.php @@ -105,16 +105,16 @@ class RequestHandlerController extends Controller { * @param string $owner provider specific UID of the user who owns the resource * @param string $ownerDisplayName display name of the user who shared the item * @param string $sharedBy provider specific UID of the user who shared the resource - * @param $sharedByDisplayName display name of the user who shared the resource + * @param string $sharedByDisplayName display name of the user who shared the resource + * @param string $sharedSecret use to authenticate accross servers * @param array $protocol (e,.g. ['name' => 'webdav', 'options' => ['username' => 'john', 'permissions' => 31]]) * @param string $shareType ('group' or 'user' share) * @param $resourceType ('file', 'calendar',...) * @return Http\DataResponse|JSONResponse * - * Example: curl -H "Content-Type: application/json" -X POST -d '{"shareWith":"admin1@serve1","name":"welcome server2.txt","description":"desc","providerId":"2","owner":"admin2@http://localhost/server2","ownerDisplayName":"admin2 display","shareType":"user","resourceType":"file","protocol":{"name":"webdav","options":{"access_token":"8Lrd1FVEREthux7","permissions":31}}}' http://localhost/server/index.php/ocm/shares + * Example: curl -H "Content-Type: application/json" -X POST -d '{"shareWith":"admin1@serve1","name":"welcome server2.txt","description":"desc","providerId":"2","owner":"admin2@http://localhost/server2","ownerDisplayName":"admin2 display","shareType":"user","resourceType":"file","protocol":{"name":"webdav","options":{"sharedSecret":"secret","permissions":"webdav-property"}}}' http://localhost/server/index.php/ocm/shares */ public function addShare($shareWith, $name, $description, $providerId, $owner, $ownerDisplayName, $sharedBy, $sharedByDisplayName, $protocol, $shareType, $resourceType) { - if (!$this->config->incomingRequestsEnabled()) { return new JSONResponse( ['message' => 'This server doesn\'t support outgoing federated shares'], @@ -132,7 +132,8 @@ class RequestHandlerController extends Controller { !is_array($protocol) || !isset($protocol['name']) || !isset ($protocol['options']) || - !is_array($protocol['options']) + !is_array($protocol['options']) || + !isset($protocol['options']['sharedSecret']) ) { return new JSONResponse( ['message' => 'Missing arguments'], @@ -163,7 +164,8 @@ class RequestHandlerController extends Controller { try { $provider = $this->cloudFederationProviderManager->getCloudFederationProvider($resourceType); - $share = $this->factory->getCloudFederationShare($shareWith, $name, $description, $providerId, $owner, $ownerDisplayName, $sharedBy, $sharedByDisplayName, $protocol, $shareType, $resourceType); + $share = $this->factory->getCloudFederationShare($shareWith, $name, $description, $providerId, $owner, $ownerDisplayName, $sharedBy, $sharedByDisplayName, '', $shareType, $resourceType); + $share->setProtocol($protocol); $id = $provider->shareReceived($share); } catch (ProviderDoesNotExistsException $e) { return new JSONResponse( @@ -191,12 +193,17 @@ class RequestHandlerController extends Controller { /** * receive notification about existing share * + * @NoCSRFRequired + * @PublicPage + * @BruteForceProtection(action=receiveFederatedShareNotification) + * * @param string $notificationType (notification type, e.g. SHARE_ACCEPTED) * @param string $resourceType (calendar, file, contact,...) - * @param array $message contain the actual notification, content is defined by cloud federation provider + * @param string $providerId id of the share + * @param array $notification the actual payload of the notification * @return JSONResponse */ - public function receiveNotification($notificationType, $resourceType, $message) { + public function receiveNotification($notificationType, $resourceType, $providerId, array $notification) { if (!$this->config->incomingRequestsEnabled()) { return new JSONResponse( ['message' => 'This server doesn\'t support outgoing federated shares'], @@ -207,7 +214,8 @@ class RequestHandlerController extends Controller { // check if all required parameters are set if ($notificationType === null || $resourceType === null || - !is_array($message) + $providerId === null || + !is_array($notification) ) { return new JSONResponse( ['message' => 'Missing arguments'], @@ -217,7 +225,7 @@ class RequestHandlerController extends Controller { try { $provider = $this->cloudFederationProviderManager->getCloudFederationProvider($resourceType); - $provider->notificationReceived($notificationType, $message); + $provider->notificationReceived($notificationType, $providerId, $notification); } catch (ProviderDoesNotExistsException $e) { return new JSONResponse( ['message' => $e->getMessage()], @@ -241,10 +249,7 @@ class RequestHandlerController extends Controller { } - return new JSONResponse( - ['id' => $id, 'createdAt' => date()], - Http::STATUS_CREATED); - + return new JSONResponse([],Http::STATUS_CREATED); } |