aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2016-07-20 09:55:43 +0200
committerRoeland Jago Douma <roeland@famdouma.nl>2016-08-05 14:17:25 +0200
commit8b160077f1a2ea7851dab8ad3b2b55bac0ae5766 (patch)
treec42503c9344aee0386de6efc27899fef20180981
parent54f21bccdf21c84b6c2d9b1774d1c68df02b1ec1 (diff)
downloadnextcloud-server-8b160077f1a2ea7851dab8ad3b2b55bac0ae5766.tar.gz
nextcloud-server-8b160077f1a2ea7851dab8ad3b2b55bac0ae5766.zip
Throw OCSNotFoundExceptions
-rw-r--r--apps/files_sharing/lib/API/Share20OCS.php131
1 files changed, 40 insertions, 91 deletions
diff --git a/apps/files_sharing/lib/API/Share20OCS.php b/apps/files_sharing/lib/API/Share20OCS.php
index f8e8108cb52..a468fd3fc14 100644
--- a/apps/files_sharing/lib/API/Share20OCS.php
+++ b/apps/files_sharing/lib/API/Share20OCS.php
@@ -23,6 +23,8 @@
*/
namespace OCA\Files_Sharing\API;
+use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\OCS\OCSNotFoundException;
use OCP\AppFramework\OCSController;
use OCP\Files\NotFoundException;
use OCP\IGroupManager;
@@ -183,7 +185,8 @@ class Share20OCS extends OCSController {
* @NoAdminRequired
*
* @param string $id
- * @return array
+ * @return DataResponse
+ * @throws OCSNotFoundException
*/
public function getShare($id) {
if (!$this->shareManager->shareApiEnabled()) {
@@ -196,27 +199,19 @@ class Share20OCS extends OCSController {
try {
$share = $this->getShareById($id);
} catch (ShareNotFound $e) {
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Wrong share ID, share doesn\'t exist'),
- ];
+ throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist'));
}
if ($this->canAccessShare($share)) {
try {
$share = $this->formatShare($share);
- return [
- 'data' => [$share],
- ];
+ return new DataResponse([$share]);
} catch (NotFoundException $e) {
//Fall trough
}
}
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Wrong share ID, share doesn\'t exist')
- ];
+ throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist'));
}
/**
@@ -226,6 +221,7 @@ class Share20OCS extends OCSController {
*
* @param string $id
* @return \OC\OCS\Result
+ * @throws OCSNotFoundException
*/
public function deleteShare($id) {
if (!$this->shareManager->shareApiEnabled()) {
@@ -238,40 +234,32 @@ class Share20OCS extends OCSController {
try {
$share = $this->getShareById($id);
} catch (ShareNotFound $e) {
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Wrong share ID, share doesn\'t exist')
- ];
+ throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist'));
}
try {
$share->getNode()->lock(ILockingProvider::LOCK_SHARED);
} catch (LockedException $e) {
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('could not delete share')
- ];
+ throw new OCSNotFoundException($this->l->t('could not delete share'));
}
if (!$this->canAccessShare($share, false)) {
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Could not delete share')
- ];
+ throw new OCSNotFoundException($this->l->t('Could not delete share'));
}
$this->shareManager->deleteShare($share);
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
- return [];
+ return new DataResponse([]);
}
/**
* @NoAdminRequired
*
- * @return array
+ * @return DataResponse
+ * @throws OCSNotFoundException
*/
public function createShare() {
$share = $this->shareManager->newShare();
@@ -286,20 +274,14 @@ class Share20OCS extends OCSController {
// Verify path
$path = $this->request->getParam('path', null);
if ($path === null) {
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Please specify a file or folder path')
- ];
+ throw new OCSNotFoundException($this->l->t('Please specify a file or folder path'));
}
$userFolder = $this->rootFolder->getUserFolder($this->currentUser->getUID());
try {
$path = $userFolder->get($path);
} catch (NotFoundException $e) {
- return [
- 'statuscode' => 404,
- 'messagecode' => $this->l->t('Wrong path, file/folder doesn\'t exist')
- ];
+ throw new OCSNotFoundException($this->l->t('Wrong path, file/folder doesn\'t exist'));
}
$share->setNode($path);
@@ -307,10 +289,7 @@ class Share20OCS extends OCSController {
try {
$share->getNode()->lock(ILockingProvider::LOCK_SHARED);
} catch (LockedException $e) {
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Could not create share')
- ];
+ throw new OCSNotFoundException($this->l->t('Could not create share'));
}
// Parse permissions (if available)
@@ -323,10 +302,7 @@ class Share20OCS extends OCSController {
if ($permissions < 0 || $permissions > \OCP\Constants::PERMISSION_ALL) {
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
- return [
- 'statuscode' => 404,
- 'message' => 'invalid permissions'
- ];
+ throw new OCSNotFoundException($this->l->t('invalid permissions'));
}
// Shares always require read permissions
@@ -354,29 +330,20 @@ class Share20OCS extends OCSController {
// Valid user is required to share
if ($shareWith === null || !$this->userManager->userExists($shareWith)) {
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Please specify a valid user')
- ];
+ throw new OCSNotFoundException($this->l->t('Please specify a valid user'));
}
$share->setSharedWith($shareWith);
$share->setPermissions($permissions);
} else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
if (!$this->shareManager->allowGroupSharing()) {
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Group sharing is disabled by the administrator')
- ];
+ throw new OCSNotFoundException($this->l->t('Group sharing is disabled by the administrator'));
}
// Valid group is required to share
if ($shareWith === null || !$this->groupManager->groupExists($shareWith)) {
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Please specify a valid group')
- ];
+ throw new OCSNotFoundException($this->l->t('Please specify a valid group'));
}
$share->setSharedWith($shareWith);
$share->setPermissions($permissions);
@@ -384,10 +351,7 @@ class Share20OCS extends OCSController {
//Can we even share links?
if (!$this->shareManager->shareApiAllowLinks()) {
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Public link sharing is disabled by the administrator')
- ];
+ throw new OCSNotFoundException($this->l->t('Public link sharing is disabled by the administrator'));
}
/*
@@ -397,7 +361,7 @@ class Share20OCS extends OCSController {
$existingShares = $this->shareManager->getSharesBy($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_LINK, $path, false, 1, 0);
if (!empty($existingShares)) {
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
- return ['data' => $this->formatShare($existingShares[0])];
+ return new DataResponse($this->formatShare($existingShares[0]));
}
$publicUpload = $this->request->getParam('publicUpload', null);
@@ -414,10 +378,7 @@ class Share20OCS extends OCSController {
// Public upload can only be set for folders
if ($path instanceof \OCP\Files\File) {
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Public upload is only possible for publicly shared folders')
- ];
+ throw new OCSNotFoundException($this->l->t('Public upload is only possible for publicly shared folders'));
}
$share->setPermissions(
@@ -446,10 +407,7 @@ class Share20OCS extends OCSController {
$share->setExpirationDate($expireDate);
} catch (\Exception $e) {
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Invalid date, date format must be YYYY-MM-DD')
- ];
+ throw new OCSNotFoundException($this->l->t('Invalid date, date format must be YYYY-MM-DD'));
}
}
@@ -501,7 +459,7 @@ class Share20OCS extends OCSController {
/**
* @param \OCP\Files\File|\OCP\Files\Folder $node
- * @return array
+ * @return DataResponse
*/
private function getSharedWithMe($node = null) {
$userShares = $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_USER, $node, -1, 0);
@@ -520,12 +478,12 @@ class Share20OCS extends OCSController {
}
}
- return ['data' => $formatted];
+ return new DataResponse($formatted);
}
/**
* @param \OCP\Files\Folder $folder
- * @return array
+ * @return DataResponse
*/
private function getSharesInDir($folder) {
if (!($folder instanceof \OCP\Files\Folder)) {
@@ -556,7 +514,7 @@ class Share20OCS extends OCSController {
}
}
- return ['data' => $formatted];
+ return new DataResponse($formatted);
}
/**
@@ -570,7 +528,8 @@ class Share20OCS extends OCSController {
* - Get shares for a specific path (?path=...)
* - Get all shares in a folder (?subfiles=true&path=..)
*
- * @return array
+ * @return DataResponse
+ * @throws OCSNotFoundException
*/
public function getShares() {
if (!$this->shareManager->shareApiEnabled()) {
@@ -588,15 +547,9 @@ class Share20OCS extends OCSController {
$path = $userFolder->get($path);
$path->lock(ILockingProvider::LOCK_SHARED);
} catch (\OCP\Files\NotFoundException $e) {
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Wrong path, file/folder doesn\'t exist')
- ];
+ throw new OCSNotFoundException($this->l->t('Wrong path, file/folder doesn\'t exist'));
} catch (LockedException $e) {
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Could not lock path')
- ];
+ throw new OCSNotFoundException($this->l->t('Could not lock path'));
}
}
@@ -646,14 +599,15 @@ class Share20OCS extends OCSController {
$path->unlock(ILockingProvider::LOCK_SHARED);
}
- return ['data' => $formatted];
+ return new DataResponse($formatted);
}
/**
* @NoAdminRequired
*
* @param int $id
- * @return array
+ * @return DataResponse
+ * @throws OCSNotFoundException
*/
public function updateShare($id) {
if (!$this->shareManager->shareApiEnabled()) {
@@ -666,20 +620,14 @@ class Share20OCS extends OCSController {
try {
$share = $this->getShareById($id);
} catch (ShareNotFound $e) {
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Wrong share ID, share doesn\'t exist')
- ];
+ throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist'));
}
$share->getNode()->lock(\OCP\Lock\ILockingProvider::LOCK_SHARED);
if (!$this->canAccessShare($share, false)) {
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Wrong share ID, share doesn\'t exist')
- ];
+ throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist'));
}
$permissions = $this->request->getParam('permissions', null);
@@ -795,6 +743,7 @@ class Share20OCS extends OCSController {
$incomingShares = $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_USER, $share->getNode(), -1, 0);
$incomingShares = array_merge($incomingShares, $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_GROUP, $share->getNode(), -1, 0));
+ /** @var \OCP\Share\IShare[] $incomingShares */
if (!empty($incomingShares)) {
$maxPermissions = 0;
foreach ($incomingShares as $incomingShare) {
@@ -824,7 +773,7 @@ class Share20OCS extends OCSController {
$share->getNode()->unlock(\OCP\Lock\ILockingProvider::LOCK_SHARED);
- return ['data' => $this->formatShare($share)];
+ return new DataResponse($this->formatShare($share));
}
/**