Skip to content
Snippets Groups Projects
Commit 21187134 authored by Joas Schilling's avatar Joas Schilling
Browse files

Add OCS api to get, accept and decline remote shares

parent df303b91
Branches
No related tags found
No related merge requests found
...@@ -260,6 +260,7 @@ class Local { ...@@ -260,6 +260,7 @@ class Local {
return new \OC_OCS_Result(null, 400, "please specify a file or folder path"); return new \OC_OCS_Result(null, 400, "please specify a file or folder path");
} }
$itemSource = self::getFileId($path); $itemSource = self::getFileId($path);
$itemSourceName = $itemSource;
$itemType = self::getItemType($path); $itemType = self::getItemType($path);
if($itemSource === null) { if($itemSource === null) {
...@@ -272,6 +273,7 @@ class Local { ...@@ -272,6 +273,7 @@ class Local {
switch($shareType) { switch($shareType) {
case \OCP\Share::SHARE_TYPE_REMOTE: case \OCP\Share::SHARE_TYPE_REMOTE:
$shareWith = rtrim($shareWith, '/'); $shareWith = rtrim($shareWith, '/');
$itemSourceName = basename($path);
case \OCP\Share::SHARE_TYPE_USER: case \OCP\Share::SHARE_TYPE_USER:
case \OCP\Share::SHARE_TYPE_GROUP: case \OCP\Share::SHARE_TYPE_GROUP:
$permissions = isset($_POST['permissions']) ? (int)$_POST['permissions'] : 31; $permissions = isset($_POST['permissions']) ? (int)$_POST['permissions'] : 31;
...@@ -303,7 +305,8 @@ class Local { ...@@ -303,7 +305,8 @@ class Local {
$itemSource, $itemSource,
$shareType, $shareType,
$shareWith, $shareWith,
$permissions $permissions,
$itemSourceName
); );
} catch (HintException $e) { } catch (HintException $e) {
return new \OC_OCS_Result(null, 400, $e->getHint()); return new \OC_OCS_Result(null, 400, $e->getHint());
......
<?php
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License, version 3,
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
namespace OCA\Files_Sharing\API;
use OC\Files\Filesystem;
use OCA\Files_Sharing\External\Manager;
class Remote {
/**
* Accept a remote share
*
* @param array $params contains the shareID 'id' which should be accepted
* @return \OC_OCS_Result
*/
public static function getOpenShares($params) {
$externalManager = new Manager(
\OC::$server->getDatabaseConnection(),
Filesystem::getMountManager(),
Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
\OC_User::getUser()
);
return new \OC_OCS_Result($externalManager->getOpenShares());
}
/**
* Accept a remote share
*
* @param array $params contains the shareID 'id' which should be accepted
* @return \OC_OCS_Result
*/
public static function acceptShare($params) {
$externalManager = new Manager(
\OC::$server->getDatabaseConnection(),
Filesystem::getMountManager(),
Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
\OC_User::getUser()
);
if ($externalManager->acceptShare($params['id'])) {
return new \OC_OCS_Result();
}
return new \OC_OCS_Result(null, 404, "wrong share ID, share doesn't exist.");
}
/**
* Decline a remote share
*
* @param array $params contains the shareID 'id' which should be declined
* @return \OC_OCS_Result
*/
public static function declineShare($params) {
$externalManager = new Manager(
\OC::$server->getDatabaseConnection(),
Filesystem::getMountManager(),
Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
\OC_User::getUser()
);
if ($externalManager->declineShare($params['id'])) {
return new \OC_OCS_Result();
}
return new \OC_OCS_Result(null, 404, "wrong share ID, share doesn't exist.");
}
}
...@@ -82,6 +82,21 @@ API::register('delete', ...@@ -82,6 +82,21 @@ API::register('delete',
array('\OCA\Files_Sharing\API\Local', 'deleteShare'), array('\OCA\Files_Sharing\API\Local', 'deleteShare'),
'files_sharing'); 'files_sharing');
API::register('get',
'/apps/files_sharing/api/v1/remote_shares',
array('\OCA\Files_Sharing\API\Remote', 'getOpenShares'),
'files_sharing');
API::register('post',
'/apps/files_sharing/api/v1/remote_shares/{id}',
array('\OCA\Files_Sharing\API\Remote', 'acceptShare'),
'files_sharing');
API::register('delete',
'/apps/files_sharing/api/v1/remote_shares/{id}',
array('\OCA\Files_Sharing\API\Remote', 'declineShare'),
'files_sharing');
// Register with the capabilities API // Register with the capabilities API
API::register('get', API::register('get',
'/cloud/capabilities', '/cloud/capabilities',
......
...@@ -186,6 +186,7 @@ class Manager { ...@@ -186,6 +186,7 @@ class Manager {
* accept server-to-server share * accept server-to-server share
* *
* @param int $id * @param int $id
* @return bool True if the share could be accepted, false otherwise
*/ */
public function acceptShare($id) { public function acceptShare($id) {
...@@ -204,13 +205,18 @@ class Manager { ...@@ -204,13 +205,18 @@ class Manager {
WHERE `id` = ? AND `user` = ?'); WHERE `id` = ? AND `user` = ?');
$acceptShare->execute(array(1, $mountPoint, $hash, $id, $this->uid)); $acceptShare->execute(array(1, $mountPoint, $hash, $id, $this->uid));
$this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'accept'); $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'accept');
return true;
} }
return false;
} }
/** /**
* decline server-to-server share * decline server-to-server share
* *
* @param int $id * @param int $id
* @return bool True if the share could be declined, false otherwise
*/ */
public function declineShare($id) { public function declineShare($id) {
...@@ -221,7 +227,11 @@ class Manager { ...@@ -221,7 +227,11 @@ class Manager {
DELETE FROM `*PREFIX*share_external` WHERE `id` = ? AND `user` = ?'); DELETE FROM `*PREFIX*share_external` WHERE `id` = ? AND `user` = ?');
$removeShare->execute(array($id, $this->uid)); $removeShare->execute(array($id, $this->uid));
$this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'decline'); $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'decline');
return true;
} }
return false;
} }
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment