44
55namespace Phauthentic \Symfony \ProblemDetails ;
66
7- use Symfony \Component \HttpFoundation \JsonResponse ;
7+ use Symfony \Component \HttpFoundation \Response ;
88use Symfony \Component \HttpKernel \Event \ExceptionEvent ;
99use Symfony \Component \HttpKernel \Exception \HttpException ;
1010use Throwable ;
2626 */
2727class HttpExceptionToProblemDetailsKernelListener
2828{
29+ public function __construct (
30+ protected ProblemDetailsFactoryInterface $ problemDetailsFactory
31+ ) {
32+ }
33+
2934 public function onKernelException (ExceptionEvent $ event ): void
3035 {
3136 $ exception = $ event ->getThrowable ();
@@ -41,18 +46,12 @@ private function isAHttpException(Throwable $exception): bool
4146 return $ exception instanceof HttpException;
4247 }
4348
44- private function buildResponse (HttpException $ httpException ): JsonResponse
49+ private function buildResponse (HttpException $ httpException ): Response
4550 {
46- return new JsonResponse (
47- data: [
48- 'type ' => 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/ ' . $ httpException ->getStatusCode (),
49- 'title ' => $ httpException ->getMessage (),
50- 'status ' => $ httpException ->getStatusCode (),
51- ],
51+ return $ this ->problemDetailsFactory ->createResponse (
5252 status: $ httpException ->getStatusCode (),
53- headers: [
54- 'Content-Type ' => 'application/problem+json ' ,
55- ]
53+ type: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/ ' . $ httpException ->getStatusCode (),
54+ title: $ httpException ->getMessage ()
5655 );
5756 }
5857}
0 commit comments