diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2017-07-25 22:25:23 +0200 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2017-08-10 13:49:09 +0200 |
commit | c9d2e31d527190660c51a75741747178f029091c (patch) | |
tree | 71aad956d8da297a96861bd9ad685f6250bb7d95 /apps/files_sharing/lib/Middleware | |
parent | 8a539ec0f6dc1650902a9340197d62688164d462 (diff) | |
download | nextcloud-server-c9d2e31d527190660c51a75741747178f029091c.tar.gz nextcloud-server-c9d2e31d527190660c51a75741747178f029091c.zip |
Remove old code + add Middleware
* Add proper middleware for shareinfo
* Remove old shareinfo routes
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'apps/files_sharing/lib/Middleware')
-rw-r--r-- | apps/files_sharing/lib/Middleware/ShareInfoMiddleware.php | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/apps/files_sharing/lib/Middleware/ShareInfoMiddleware.php b/apps/files_sharing/lib/Middleware/ShareInfoMiddleware.php new file mode 100644 index 00000000000..a069ecacc2a --- /dev/null +++ b/apps/files_sharing/lib/Middleware/ShareInfoMiddleware.php @@ -0,0 +1,84 @@ +<?php + +namespace OCA\Files_Sharing\Middleware; + +use OCA\FederatedFileSharing\FederatedShareProvider; +use OCA\Files_Sharing\Controller\ShareInfoController; +use OCA\Files_Sharing\Exceptions\S2SException; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\JSONResponse; +use OCP\AppFramework\Http\Response; +use OCP\AppFramework\Middleware; +use OCP\Share\IManager; + +class ShareInfoMiddleware extends Middleware { + /** @var IManager */ + private $shareManager; + + public function __construct(IManager $shareManager) { + $this->shareManager = $shareManager; + } + + /** + * @param Controller $controller + * @param string $methodName + * @throws S2SException + */ + public function beforeController(Controller $controller, $methodName) { + if (!($controller instanceof ShareInfoController)) { + return; + } + + if (!$this->shareManager->outgoingServer2ServerSharesAllowed()) { + throw new S2SException(); + } + } + + /** + * @param Controller $controller + * @param string $methodName + * @param \Exception $exception + * @throws \Exception + * @return Response + */ + public function afterException(Controller $controller, $methodName, \Exception $exception) { + if (!($controller instanceof ShareInfoController)) { + throw $exception; + } + + if ($exception instanceof S2SException) { + return new JSONResponse([], Http::STATUS_NOT_FOUND); + } + } + + /** + * @param Controller $controller + * @param string $methodName + * @param Response $response + * @return Response + */ + public function afterController(Controller $controller, $methodName, Response $response) { + if (!($controller instanceof ShareInfoController)) { + return $response; + } + + if (!($response instanceof JSONResponse)) { + return $response; + } + + $data = $response->getData(); + $status = 'error'; + + if ($response->getStatus() === Http::STATUS_OK) { + $status = 'success'; + } + + $response->setData([ + 'data' => $data, + 'status' => $status, + ]); + + return $response; + } +} |