src/Component/EventListener/ExceptionListener.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Component\EventListener;
  3. use App\Component\Traits\ParameterBagTrait;
  4. use App\Controller\Api\AbstractApiController;
  5. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  6. use function Symfony\Component\String\s;
  7. class ExceptionListener extends AbstractApiController
  8. {
  9. use ParameterBagTrait;
  10. /**
  11. * Fonction qui s'execute lorsqu'il y a une exception levée au niveau kernel.
  12. * @param ExceptionEvent $event
  13. * @noinspection PhpUnused
  14. */
  15. public function onKernelException(ExceptionEvent $event)
  16. {
  17. $userAgent = $event->getRequest()->headers->get('User-Agent');
  18. // réponse en mode JSON si l'user agent contient "postman" ou bien "okhttp"
  19. if (!s(strtolower($userAgent))->containsAny(['postman', 'okhttp'])) {
  20. return;
  21. }
  22. $message = null;
  23. if ($this->parameterBag->get('api.debug')) {
  24. $exception = $event->getThrowable();
  25. $message = [
  26. 'error' => $exception->getMessage(),
  27. 'trace' => explode("\n", $exception->getTraceAsString()),
  28. ];
  29. }
  30. $event->setResponse($this->apiErrorResponse($message));
  31. }
  32. }