/** * Converts a {@see \Symfony\Component\Debug\Exception\FlattenException} * to a {@see \Dunglas\ApiBundle\JsonLd\Response}. * * @param FlattenException $exception * * @return Response */ public function __invoke(FlattenException $exception) { $exceptionClass = $exception->getClass(); if (is_a($exceptionClass, ExceptionInterface::class, true) || is_a($exceptionClass, InvalidArgumentException::class, true)) { $exception->setStatusCode(Response::HTTP_BAD_REQUEST); } return new Response($this->normalizer->normalize($exception, 'hydra-error'), $exception->getStatusCode(), $exception->getHeaders()); }
/** * Converts a an exception to a JSON response. * * @param FlattenException $exception * @param Request $request * * @return Response */ public function __invoke(FlattenException $exception, Request $request) : Response { $exceptionClass = $exception->getClass(); foreach ($this->exceptionToStatus as $class => $status) { if (is_a($exceptionClass, $class, true)) { $exception->setStatusCode($status); break; } } $headers = $exception->getHeaders(); $format = ErrorFormatGuesser::guessErrorFormat($request, $this->errorFormats); $headers['Content-Type'] = sprintf('%s; charset=utf-8', $format['value'][0]); $headers['X-Content-Type-Options'] = 'nosniff'; $headers['X-Frame-Options'] = 'deny'; return new Response($this->serializer->serialize($exception, $format['key']), $exception->getStatusCode(), $headers); }