src/Adapter/Api/EventListener/ApiExceptionListener.php line 34

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: matijajanc
  5.  * Date: 23/05/2018
  6.  * Time: 09:26
  7.  */
  8. namespace App\Adapter\Api\EventListener;
  9. use App\Adapter\Api\Exception\ApiException;
  10. use App\Adapter\Api\Service\Response\ResponseManager;
  11. use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
  12. class ApiExceptionListener
  13. {
  14.     /**
  15.      * @var ResponseManager
  16.      */
  17.     private $response;
  18.     /**
  19.      * ApiExceptionListener constructor.
  20.      * @param ResponseManager $response
  21.      */
  22.     public function __construct(ResponseManager $response)
  23.     {
  24.         $this->response $response;
  25.     }
  26.     /**
  27.      * @param GetResponseForExceptionEvent $event
  28.      */
  29.     public function onKernelException(GetResponseForExceptionEvent $event)
  30.     {
  31.         $exception $event->getException();
  32.         if (!$exception instanceof ApiException) {
  33.             return;
  34.         }
  35.         $message json_decode($exception->getMessage(), true);
  36.         $event->setResponse(
  37.             $this->response->error(
  38.                 $message[0] ?? '',
  39.                 $message[1] ?? '',
  40.                 $message[2] ?? '',
  41.                 $exception->getCode()
  42.             )
  43.         );
  44.     }
  45. }