src/EventListener/KernelListener.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. class KernelListener
  7. {
  8.     public function onKernelRequest(RequestEvent $event)
  9.     {
  10.         $request $event->getRequest();
  11.         if ($this->isJsonRequest($request) === false) {
  12.             return;
  13.         }
  14.         if ($this->decodeRequest($request) === false) {
  15.             $response = new Response('Unable to parse request.'400);
  16.             $event->setResponse($response);
  17.         }
  18.     }
  19.     private function isJsonRequest(Request $request): bool
  20.     {
  21.         return 'json' === $request->getContentType() && $request->getContent();
  22.     }
  23.     private function decodeRequest(Request $request): bool
  24.     {
  25.         $data json_decode($request->getContent(), true);
  26.         if (json_last_error() !== JSON_ERROR_NONE) {
  27.             return false;
  28.         }
  29.         if (is_array($data)) {
  30.             $request->request->replace($data);
  31.         }
  32.         return true;
  33.     }
  34. }