summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2016-07-20 10:41:09 +0200
committerRoeland Jago Douma <roeland@famdouma.nl>2016-08-05 14:17:31 +0200
commit7fdc2f32fa442b84579acfe94fd8c44866d9b2bd (patch)
tree0a1ebf74478638d4750bef9ccba8423f7f714441
parent3a31b2875bc37114ac97f00e6cb6ea7b3ee53f60 (diff)
downloadnextcloud-server-7fdc2f32fa442b84579acfe94fd8c44866d9b2bd.tar.gz
nextcloud-server-7fdc2f32fa442b84579acfe94fd8c44866d9b2bd.zip
More exceptions
-rw-r--r--apps/files_sharing/lib/API/Share20OCS.php81
1 files changed, 24 insertions, 57 deletions
diff --git a/apps/files_sharing/lib/API/Share20OCS.php b/apps/files_sharing/lib/API/Share20OCS.php
index 1a0e75f2749..aebda5d8512 100644
--- a/apps/files_sharing/lib/API/Share20OCS.php
+++ b/apps/files_sharing/lib/API/Share20OCS.php
@@ -24,6 +24,9 @@
namespace OCA\Files_Sharing\API;
use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\OCS\OCSBadRequestException;
+use OCP\AppFramework\OCS\OCSException;
+use OCP\AppFramework\OCS\OCSForbiddenException;
use OCP\AppFramework\OCS\OCSNotFoundException;
use OCP\AppFramework\OCSController;
use OCP\Files\NotFoundException;
@@ -245,6 +248,9 @@ class Share20OCS extends OCSController {
*
* @return DataResponse
* @throws OCSNotFoundException
+ * @throws OCSForbiddenException
+ * @throws OCSBadRequestException
+ * @throws OCSException
*/
public function createShare() {
$share = $this->shareManager->newShare();
@@ -340,10 +346,7 @@ class Share20OCS extends OCSController {
if ($publicUpload === 'true') {
// Check if public upload is allowed
if (!$this->shareManager->shareApiLinkAllowPublicUpload()) {
- return [
- 'statuscode' => 403,
- 'message' => $this->l->t('Public upload disabled by the administrator')
- ];
+ throw new OCSForbiddenException($this->l->t('Public upload disabled by the administrator'));
}
// Public upload can only be set for folders
@@ -382,19 +385,13 @@ class Share20OCS extends OCSController {
} else if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE) {
if (!$this->shareManager->outgoingServer2ServerSharesAllowed()) {
- return [
- 'statuscode' => 403,
- 'message' => $this->l->t('Sharing %s failed because the back end does not allow shares from type %s', [$path->getPath(), $shareType])
- ];
+ throw new OCSForbiddenException($this->l->t('Sharing %s failed because the back end does not allow shares from type %s', [$path->getPath(), $shareType]));
}
$share->setSharedWith($shareWith);
$share->setPermissions($permissions);
} else {
- return [
- 'statuscode' => 400,
- $this->l->t('Unknown share type')
- ];
+ throw new OCSBadRequestException($this->l->t('Unknown share type');
}
$share->setShareType($shareType);
@@ -404,20 +401,14 @@ class Share20OCS extends OCSController {
$share = $this->shareManager->createShare($share);
} catch (GenericShareException $e) {
$code = $e->getCode() === 0 ? 403 : $e->getCode();
- return [
- 'statuscode' => $code,
- 'message' => $e->getHint()
- ];
+ throw new OCSException($e->getHint(), $code);
}catch (\Exception $e) {
- return [
- 'statuscode' => 403,
- 'message' => $e->getMessage()
- ];
+ throw new OCSForbiddenException($e->getMessage());
}
$output = $this->formatShare($share);
- return ['data' => $output];
+ return new DataResponse($output);
}
/**
@@ -447,13 +438,11 @@ class Share20OCS extends OCSController {
/**
* @param \OCP\Files\Folder $folder
* @return DataResponse
+ * @throws OCSBadRequestException
*/
private function getSharesInDir($folder) {
if (!($folder instanceof \OCP\Files\Folder)) {
- return [
- 'statuscode' => 400,
- 'message' => $this->l->t('Not a directory')
- ];
+ throw new OCSBadRequestException($this->l->t('Not a directory'));
}
$nodes = $folder->getDirectoryListing();
@@ -557,6 +546,8 @@ class Share20OCS extends OCSController {
* @param int $id
* @return DataResponse
* @throws OCSNotFoundException
+ * @throws OCSBadRequestException
+ * @throws OCSForbiddenException
*/
public function updateShare($id) {
try {
@@ -581,10 +572,7 @@ class Share20OCS extends OCSController {
*/
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
if ($permissions === null && $password === null && $publicUpload === null && $expireDate === null) {
- return [
- 'statuscode' => 400,
- 'message' => 'Wrong or no update parameter given'
- ];
+ throw new OCSBadRequestException($this->l->t('Wrong or no update parameter given'));
}
$newPermissions = null;
@@ -606,10 +594,7 @@ class Share20OCS extends OCSController {
\OCP\Constants::PERMISSION_CREATE, // hidden file list
])
) {
- return [
- 'statuscode' => 400,
- 'message' => $this->l->t('Can\'t change permissions for public share links')
- ];
+ throw new OCSBadRequestException($this->l->t('Can\'t change permissions for public share links'));
}
if (
@@ -619,17 +604,11 @@ class Share20OCS extends OCSController {
$newPermissions === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE)
) {
if (!$this->shareManager->shareApiLinkAllowPublicUpload()) {
- return [
- 'statuscode' => 403,
- 'message' => $this->l->t('Public upload disabled by the administrator')
- ];
+ throw new OCSForbiddenException($this->l->t('Public upload disabled by the administrator'));
}
if (!($share->getNode() instanceof \OCP\Files\Folder)) {
- return [
- 'statuscode' => 400,
- 'message' => $this->l->t('Public upload is only possible for publicly shared folders')
- ];
+ throw new OCSBadRequestException($this->l->t('Public upload is only possible for publicly shared folders'));
}
// normalize to correct public upload permissions
@@ -646,10 +625,7 @@ class Share20OCS extends OCSController {
try {
$expireDate = $this->parseDate($expireDate);
} catch (\Exception $e) {
- return [
- 'statuscode' => 400,
- 'message' => $e->getMessage()
- ];
+ throw new OCSBadRequestException($e->getMessage());
}
$share->setExpirationDate($expireDate);
}
@@ -663,10 +639,7 @@ class Share20OCS extends OCSController {
} else {
// For other shares only permissions is valid.
if ($permissions === null) {
- return [
- 'statuscode' => 400,
- 'message' => $this->l->t('Wrong or no update parameter given')
- ];
+ throw new OCSBadRequestException($this->l->t('Wrong or no update parameter given'));
} else {
$permissions = (int)$permissions;
$share->setPermissions($permissions);
@@ -686,10 +659,7 @@ class Share20OCS extends OCSController {
}
if ($share->getPermissions() & ~$maxPermissions) {
- return [
- 'statuscode' => 404,
- 'message' => $this->l->t('Cannot increase permissions')
- ];
+ throw new OCSBadRequestException($this->l->t('Cannot increase permissions'));
}
}
}
@@ -698,10 +668,7 @@ class Share20OCS extends OCSController {
try {
$share = $this->shareManager->updateShare($share);
} catch (\Exception $e) {
- return [
- 'statuscode' => 400,
- 'message' => $e->getMessage()
- ];
+ throw new OCSBadRequestException($e->getMessage());
}
return new DataResponse($this->formatShare($share));