vendor/symfony-bundles/json-request-bundle/src/EventListener/RequestTransformerListener.php line 19

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace SymfonyBundles\JsonRequestBundle\EventListener;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpFoundation\JsonResponse;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. final class RequestTransformerListener
  8. {
  9.     private array $contentTypes;
  10.     public function __construct(array $contentTypes)
  11.     {
  12.         $this->contentTypes $contentTypes;
  13.     }
  14.     public function onKernelRequest(RequestEvent $event): void
  15.     {
  16.         $request $event->getRequest();
  17.         if (false === $this->supports($request)) {
  18.             return;
  19.         }
  20.         try {
  21.             $data = \json_decode((string) $request->getContent(), true512, \JSON_THROW_ON_ERROR);
  22.             if (\is_array($data)) {
  23.                 $request->request->replace($data);
  24.             }
  25.         } catch (\JsonException $exception) {
  26.             $event->setResponse(new JsonResponse(['message' => $exception->getMessage()], Response::HTTP_BAD_REQUEST));
  27.         }
  28.     }
  29.     private function supports(Request $request): bool
  30.     {
  31.         return in_array($request->getContentType(), $this->contentTypestrue) && $request->getContent();
  32.     }
  33. }