| @@ 26-53 (lines=28) @@ | ||
| 23 | * @author Baptiste Meyer <[email protected]> |
|
| 24 | * @author Armouche Hamza <[email protected]> |
|
| 25 | */ |
|
| 26 | final class ExceptionAction |
|
| 27 | { |
|
| 28 | private $normalizer; |
|
| 29 | ||
| 30 | public function __construct(NormalizerInterface $normalizer) |
|
| 31 | { |
|
| 32 | $this->normalizer = $normalizer; |
|
| 33 | } |
|
| 34 | ||
| 35 | /** |
|
| 36 | * Converts a an exception to a JSON response. |
|
| 37 | */ |
|
| 38 | public function __invoke(FlattenException $exception) : JsonResponse |
|
| 39 | { |
|
| 40 | $exceptionClass = $exception->getClass(); |
|
| 41 | if ( |
|
| 42 | is_a($exceptionClass, ExceptionInterface::class, true) || |
|
| 43 | is_a($exceptionClass, InvalidArgumentException::class, true) |
|
| 44 | ) { |
|
| 45 | $exception->setStatusCode(JsonResponse::HTTP_BAD_REQUEST); |
|
| 46 | } |
|
| 47 | ||
| 48 | $headers = $exception->getHeaders(); |
|
| 49 | $headers['Content-Type'] = 'application/hal+json'; |
|
| 50 | ||
| 51 | return new JsonResponse($this->normalizer->normalize($exception, 'hal-error'), $exception->getStatusCode(), $headers); |
|
| 52 | } |
|
| 53 | } |
|
| 54 | ||
| @@ 25-52 (lines=28) @@ | ||
| 22 | * |
|
| 23 | * @author Baptiste Meyer <[email protected]> |
|
| 24 | */ |
|
| 25 | final class ExceptionAction |
|
| 26 | { |
|
| 27 | private $normalizer; |
|
| 28 | ||
| 29 | public function __construct(NormalizerInterface $normalizer) |
|
| 30 | { |
|
| 31 | $this->normalizer = $normalizer; |
|
| 32 | } |
|
| 33 | ||
| 34 | /** |
|
| 35 | * Converts a an exception to a JSON response. |
|
| 36 | */ |
|
| 37 | public function __invoke(FlattenException $exception) : JsonResponse |
|
| 38 | { |
|
| 39 | $exceptionClass = $exception->getClass(); |
|
| 40 | if ( |
|
| 41 | is_a($exceptionClass, ExceptionInterface::class, true) || |
|
| 42 | is_a($exceptionClass, InvalidArgumentException::class, true) |
|
| 43 | ) { |
|
| 44 | $exception->setStatusCode(JsonResponse::HTTP_BAD_REQUEST); |
|
| 45 | } |
|
| 46 | ||
| 47 | $headers = $exception->getHeaders(); |
|
| 48 | $headers['Content-Type'] = 'application/ld+json'; |
|
| 49 | ||
| 50 | return new JsonResponse($this->normalizer->normalize($exception, 'hydra-error'), $exception->getStatusCode(), $headers); |
|
| 51 | } |
|
| 52 | } |
|
| 53 | ||