src/GraphQL/EventListener/ExceptionListener.php line 21

Open in your IDE?
  1. <?php
  2. namespace GraphQL\EventListener;
  3. use App\Exception\ValidationException;
  4. use Eshop\Entity\Delivery\DeliverySlot;
  5. use Symfony\Component\HttpFoundation\JsonResponse;
  6. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  7. use Symfony\Component\HttpKernel\Exception\HttpException;
  8. use Symfony\Component\HttpKernel\KernelInterface;
  9. class ExceptionListener
  10. {
  11.     private KernelInterface $kernel;
  12.     public function __construct(KernelInterface  $kernel)
  13.     {
  14.         $this->kernel $kernel;
  15.     }
  16.     public function __invoke(ExceptionEvent $event): void
  17.     {
  18.         //if($this->kernel->getEnvironment() !== 'prod') return;
  19.         $exception $event->getThrowable();
  20.         $statusCode $exception->getCode();
  21.         if ($exception instanceof ValidationException) {
  22.             $responseData = ['errors' => $exception->getErrors()];
  23.             $statusCode 401;
  24.         } else if ($exception instanceof HttpException) {
  25.             $responseData = ['errors' => [$exception->getMessage()]];
  26.             $statusCode $exception->getStatusCode();
  27.         } else {
  28.             $responseData = ['errors' => ['An error occurred']];
  29.         }
  30.         if($statusCode === 0$statusCode 500;
  31.         $response = new JsonResponse($responseData$statusCode ?? 500);
  32.         $event->setResponse($response);
  33.         $event->stopPropagation();
  34.     }
  35. }