Added '../remote_shares' endpoint
* list incoming remote shares at 'remote_shares' * get per share info at 'remote_shares/<ID>' * delete remote share with a DELETE to 'remote_shares/<ID>'
This commit is contained in:
parent
4a62021141
commit
7310c4166a
|
@ -27,9 +27,9 @@ use OCA\Files_Sharing\External\Manager;
|
|||
class Remote {
|
||||
|
||||
/**
|
||||
* Accept a remote share
|
||||
* Get list of pending remote shares
|
||||
*
|
||||
* @param array $params contains the shareID 'id' which should be accepted
|
||||
* @param array $params empty
|
||||
* @return \OC_OCS_Result
|
||||
*/
|
||||
public static function getOpenShares($params) {
|
||||
|
@ -90,4 +90,79 @@ class Remote {
|
|||
|
||||
return new \OC_OCS_Result(null, 404, "wrong share ID, share doesn't exist.");
|
||||
}
|
||||
|
||||
/**
|
||||
* List accepted remote shares
|
||||
*
|
||||
* @param array $params
|
||||
* @return \OC_OCS_Result
|
||||
*/
|
||||
public static function getShares($params) {
|
||||
$externalManager = new Manager(
|
||||
\OC::$server->getDatabaseConnection(),
|
||||
Filesystem::getMountManager(),
|
||||
Filesystem::getLoader(),
|
||||
\OC::$server->getHTTPHelper(),
|
||||
\OC::$server->getNotificationManager(),
|
||||
\OC_User::getUser()
|
||||
);
|
||||
|
||||
return new \OC_OCS_Result($externalManager->getAcceptedShares());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get info of a remote share
|
||||
*
|
||||
* @param array $params contains the shareID 'id'
|
||||
* @return \OC_OCS_Result
|
||||
*/
|
||||
public static function getShare($params) {
|
||||
$externalManager = new Manager(
|
||||
\OC::$server->getDatabaseConnection(),
|
||||
Filesystem::getMountManager(),
|
||||
Filesystem::getLoader(),
|
||||
\OC::$server->getHTTPHelper(),
|
||||
\OC::$server->getNotificationManager(),
|
||||
\OC_User::getUser()
|
||||
);
|
||||
|
||||
$shareInfo = $externalManager->getShare($params['id']);
|
||||
|
||||
if ($shareInfo === false) {
|
||||
return new \OC_OCS_Result(null, 404, 'share does not exist');
|
||||
} else {
|
||||
return new \OC_OCS_Result($shareInfo);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unshare a remote share
|
||||
*
|
||||
* @param array $params contains the shareID 'id' which should be unshared
|
||||
* @return \OC_OCS_Result
|
||||
*/
|
||||
public static function unshare($params) {
|
||||
$externalManager = new Manager(
|
||||
\OC::$server->getDatabaseConnection(),
|
||||
Filesystem::getMountManager(),
|
||||
Filesystem::getLoader(),
|
||||
\OC::$server->getHTTPHelper(),
|
||||
\OC::$server->getNotificationManager(),
|
||||
\OC_User::getUser()
|
||||
);
|
||||
|
||||
$shareInfo = $externalManager->getShare($params['id']);
|
||||
|
||||
if ($shareInfo === false) {
|
||||
return new \OC_OCS_Result(null, 404, 'Share does not exist');
|
||||
}
|
||||
|
||||
$mountPoint = '/' . \OC_User::getUser() . '/files' . $shareInfo['mountpoint'];
|
||||
|
||||
if ($externalManager->removeShare($mountPoint) === true) {
|
||||
return new \OC_OCS_Result(null);
|
||||
} else {
|
||||
return new \OC_OCS_Result(null, 403, 'Could not unshare');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -102,6 +102,22 @@ API::register('delete',
|
|||
array('\OCA\Files_Sharing\API\Remote', 'declineShare'),
|
||||
'files_sharing');
|
||||
|
||||
API::register('get',
|
||||
'/apps/files_sharing/api/v1/remote_shares',
|
||||
array('\OCA\Files_Sharing\API\Remote', 'getShares'),
|
||||
'files_sharing');
|
||||
|
||||
API::register('get',
|
||||
'/apps/files_sharing/api/v1/remote_shares/{id}',
|
||||
array('\OCA\Files_Sharing\API\Remote', 'getShare'),
|
||||
'files_sharing');
|
||||
|
||||
API::register('delete',
|
||||
'/apps/files_sharing/api/v1/remote_shares/{id}',
|
||||
array('\OCA\Files_Sharing\API\Remote', 'unshare'),
|
||||
'files_sharing');
|
||||
|
||||
|
||||
$sharees = new \OCA\Files_Sharing\API\Sharees(\OC::$server->getGroupManager(),
|
||||
\OC::$server->getUserManager(),
|
||||
\OC::$server->getContactsManager(),
|
||||
|
|
|
@ -180,9 +180,9 @@ class Manager {
|
|||
* @param int $id share id
|
||||
* @return mixed share of false
|
||||
*/
|
||||
private function getShare($id) {
|
||||
public function getShare($id) {
|
||||
$getShare = $this->connection->prepare('
|
||||
SELECT `remote`, `remote_id`, `share_token`, `name`
|
||||
SELECT *
|
||||
FROM `*PREFIX*share_external`
|
||||
WHERE `id` = ? AND `user` = ?');
|
||||
$result = $getShare->execute(array($id, $this->uid));
|
||||
|
@ -406,6 +406,15 @@ class Manager {
|
|||
return $this->getShares(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* return a list of shares wich are accepted by the user
|
||||
*
|
||||
* @return array list of accepted server-to-server shares
|
||||
*/
|
||||
public function getAcceptedShares() {
|
||||
return $this->getShares(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* return a list of shares for the user
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue