PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / trunk
Booking for Appointments and Events Calendar – Amelia vtrunk
2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / src / Infrastructure / Common / AmeliaErrorHandler.php
ameliabooking / src / Infrastructure / Common Last commit date
Exceptions 6 months ago AmeliaErrorHandler.php 4 weeks ago Container.php 4 weeks ago
AmeliaErrorHandler.php
45 lines
1 <?php
2
3 /**
4 * @copyright © Melograno Ventures. All rights reserved.
5 * @licence See COPYING.md for license details.
6 */
7
8 namespace AmeliaBooking\Infrastructure\Common;
9
10 use AmeliaBooking\Application\Common\Exceptions\AccessDeniedException;
11 use AmeliaBooking\Application\Controller\Controller;
12 use AmeliaVendor\Psr\Http\Message\ResponseInterface;
13 use Slim\Exception\HttpException;
14 use Slim\Handlers\ErrorHandler;
15
16 class AmeliaErrorHandler extends ErrorHandler
17 {
18 protected function respond(): ResponseInterface
19 {
20 $exception = $this->exception;
21 $request = $this->request;
22
23 if ($exception instanceof AccessDeniedException) {
24 $status = Controller::STATUS_FORBIDDEN;
25 } elseif ($exception instanceof HttpException) {
26 $status = $exception->getCode();
27 } else {
28 $status = Controller::STATUS_INTERNAL_SERVER_ERROR;
29 }
30
31 $responseMessage = ['message' => $exception->getMessage()];
32
33 $queryParams = $request->getQueryParams();
34 if (!empty($queryParams['showAmeliaSqlExceptions'])) {
35 $prev = $exception->getPrevious();
36 $responseMessage['exception'] = $prev ? $prev->getMessage() : '';
37 }
38
39 $response = $this->responseFactory->createResponse($status);
40 $response->getBody()->write(json_encode($responseMessage));
41
42 return $response->withHeader('Content-Type', 'application/json');
43 }
44 }
45