src/EventSubscriber/DataRetrieverEventManager.php line 57

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Model\Exception\ContactNotFoundException;
  4. use App\Model\Exception\ProspectNotFoundException;
  5. use App\Model\Exception\QuoteNotFoundException;
  6. use App\Model\Exception\SavedUserSearchNotFoundException;
  7. use App\Model\Exception\SubResourceNotFoundException;
  8. use App\Model\Exception\TaskNotFoundException;
  9. use App\V4\Logger\SentryLogger;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Symfony\Component\HttpClient\Exception\ClientException;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  15. use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
  16. use Symfony\Component\HttpKernel\KernelEvents;
  17. /**
  18.  * Class ProductManager.
  19.  */
  20. final class DataRetrieverEventManager implements EventSubscriberInterface
  21. {
  22.     /**
  23.      * @var SentryLogger
  24.      */
  25.     private $sentryLogger;
  26.     /**
  27.      * DataRetrieverEventManager constructor.
  28.      *
  29.      * @param SentryLogger $sentryLogger
  30.      */
  31.     public function __construct(SentryLogger $sentryLogger)
  32.     {
  33.         $this->sentryLogger $sentryLogger;
  34.     }
  35.     /**
  36.      * @return array
  37.      */
  38.     public static function getSubscribedEvents(): array
  39.     {
  40.         return [
  41.             KernelEvents::EXCEPTION => [
  42.                 ['checkException'5],
  43.             ],
  44.         ];
  45.     }
  46.     /**
  47.      * @param ExceptionEvent $event
  48.      *
  49.      * @throws \Exception
  50.      */
  51.     public function checkException(ExceptionEvent $event): void
  52.     {
  53.         $e $event->getThrowable();
  54.         if (!$e instanceof ProspectNotFoundException
  55.             && !$e instanceof ContactNotFoundException
  56.             && !$e instanceof TaskNotFoundException
  57.             && !$e instanceof SavedUserSearchNotFoundException
  58.             && !$e instanceof QuoteNotFoundException
  59.             && !$e instanceof SubResourceNotFoundException
  60.             && !$e instanceof UnauthorizedHttpException
  61.             && !$e instanceof ClientException) {
  62.             return;
  63.         }
  64.         $this->sentryLogger->captureException(SentryLogger::CHANNEL_DATA_RETRIEVER$e, ['catchOnClass' => self::class]);
  65.         $response = new JsonResponse(
  66.             [
  67.                 'code' => $e instanceof ClientException || $e instanceof UnauthorizedHttpException Response::HTTP_UNAUTHORIZED Response::HTTP_INTERNAL_SERVER_ERROR,
  68.                 'errorMessage' => $e instanceof ClientException 'erreur_deconnexion' $e->getMessage(),
  69.             ],
  70.             200
  71.         );
  72.         $response->headers->set('Content-Type''application/+json');
  73.         $event->setResponse($response);
  74.     }
  75. }