Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
CRAP | |
100.00% |
18 / 18 |
| HttpError | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
6 | |
100.00% |
18 / 18 |
| jsonError | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
| htmlError | |
100.00% |
1 / 1 |
1 | |
100.00% |
7 / 7 |
|||
| getHttpStatusCode | |
100.00% |
1 / 1 |
4 | |
100.00% |
7 / 7 |
|||
| <?php | |
| /** | |
| * Gallery | |
| * | |
| * This file is licensed under the Affero General Public License version 3 or | |
| * later. See the COPYING file. | |
| * | |
| * @author Bernhard Posselt <dev@bernhard-posselt.com> | |
| * @author Olivier Paroz <galleryapps@oparoz.com> | |
| * | |
| * @copyright Bernhard Posselt 2014-2015 | |
| * @copyright Olivier Paroz 2014-2016 | |
| */ | |
| namespace OCA\Gallery\Controller; | |
| use Exception; | |
| use OCP\IURLGenerator; | |
| use OCP\AppFramework\Http; | |
| use OCP\AppFramework\Http\JSONResponse; | |
| use OCP\AppFramework\Http\RedirectResponse; | |
| use OCA\Gallery\Environment\NotFoundEnvException; | |
| use OCA\Gallery\Service\NotFoundServiceException; | |
| use OCA\Gallery\Service\ForbiddenServiceException; | |
| /** | |
| * Our classes extend both Controller and ApiController, so we need to use | |
| * traits to add some common methods | |
| * | |
| * @package OCA\Gallery\Controller | |
| */ | |
| trait HttpError { | |
| /** | |
| * @param \Exception $exception | |
| * | |
| * @return JSONResponse | |
| */ | |
| public function jsonError(Exception $exception) { | |
| $message = $exception->getMessage(); | |
| $code = $this->getHttpStatusCode($exception); | |
| return new JSONResponse( | |
| [ | |
| 'message' => $message . ' (' . $code . ')', | |
| 'success' => false | |
| ], | |
| $code | |
| ); | |
| } | |
| /** | |
| * @param IURLGenerator $urlGenerator | |
| * @param string $appName | |
| * @param \Exception $exception | |
| * | |
| * @return RedirectResponse | |
| */ | |
| public function htmlError($urlGenerator, $appName, Exception $exception) { | |
| $message = $exception->getMessage(); | |
| $code = $this->getHttpStatusCode($exception); | |
| $url = $urlGenerator->linkToRoute( | |
| $appName . '.page.error_page', ['code' => $code] | |
| ); | |
| $response = new RedirectResponse($url); | |
| $response->addCookie('galleryErrorMessage', $message); | |
| return $response; | |
| } | |
| /** | |
| * Returns an error array | |
| * | |
| * @param $exception | |
| * | |
| * @return array<null|int|string> | |
| */ | |
| public function getHttpStatusCode($exception) { | |
| $code = Http::STATUS_INTERNAL_SERVER_ERROR; | |
| if ($exception instanceof NotFoundServiceException | |
| || $exception instanceof NotFoundEnvException | |
| ) { | |
| $code = Http::STATUS_NOT_FOUND; | |
| } | |
| if ($exception instanceof ForbiddenServiceException) { | |
| $code = Http::STATUS_FORBIDDEN; | |
| } | |
| return $code; | |
| } | |
| } |