From ef03b6dfb040da9615a11679306d707da7fee51f Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 26 Jul 2023 09:26:19 +0200 Subject: [PATCH] Don't rely on Request::getPayload() to populate the parsed body --- Factory/PsrHttpFactory.php | 11 +++++------ Tests/Factory/PsrHttpFactoryTest.php | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Factory/PsrHttpFactory.php b/Factory/PsrHttpFactory.php index 6ad157f..09c4360 100644 --- a/Factory/PsrHttpFactory.php +++ b/Factory/PsrHttpFactory.php @@ -20,7 +20,6 @@ use Psr\Http\Message\UploadedFileInterface; use Symfony\Bridge\PsrHttpMessage\HttpMessageFactoryInterface; use Symfony\Component\HttpFoundation\BinaryFileResponse; -use Symfony\Component\HttpFoundation\Exception\JsonException; use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -79,11 +78,11 @@ public function createRequest(Request $symfonyRequest) $format = $symfonyRequest->getContentType(); } - if (method_exists(Request::class, 'getPayload') && 'json' === $format) { - try { - $parsedBody = $symfonyRequest->getPayload()->all(); - } catch (JsonException $e) { - $parsedBody = []; + if ('json' === $format) { + $parsedBody = json_decode($symfonyRequest->getContent(), true, 512, \JSON_BIGINT_AS_STRING); + + if (!\is_array($parsedBody)) { + $parsedBody = null; } } else { $parsedBody = $symfonyRequest->request->all(); diff --git a/Tests/Factory/PsrHttpFactoryTest.php b/Tests/Factory/PsrHttpFactoryTest.php index a0a4a32..9d4c4c9 100644 --- a/Tests/Factory/PsrHttpFactoryTest.php +++ b/Tests/Factory/PsrHttpFactoryTest.php @@ -293,6 +293,6 @@ public function testWrongJsonContent() $request = new Request([], [], [], [], [], $headers, '{"city":"Paris"'); $psrRequest = $this->factory->createRequest($request); - $this->assertSame([], $psrRequest->getParsedBody()); + $this->assertNull($psrRequest->getParsedBody()); } }