PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4.4
Booking for Appointments and Events Calendar – Amelia v2.4.4
2.4.4 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 1 month ago Container.php 1 month 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