Skip to content

Commit 60510b8

Browse files
Add raw request body
1 parent d74003a commit 60510b8

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

Embryo/Http/Factory/ServerRequestFactory.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
namespace Embryo\Http\Factory;
1414

1515
use Embryo\Http\Message\ServerRequest;
16-
use Embryo\Http\Factory\{UploadedFileFactory, UriFactory};
16+
use Embryo\Http\Factory\{StreamFactory, UploadedFileFactory, UriFactory};
1717
use Psr\Http\Message\{ServerRequestFactoryInterface, ServerRequestInterface, UriInterface};
1818

1919
class ServerRequestFactory implements ServerRequestFactoryInterface
@@ -47,6 +47,22 @@ public function createServerRequestFromServer(): ServerRequestInterface
4747
$request = $request->withParsedBody($_POST);
4848
$request = $request->withCookieParams($_COOKIE);
4949
$request = $request->withUploadedFiles($files);
50+
51+
$contentType = $request->getHeaderLine('Content-Type');
52+
if ($contentType !== '' && strpos($contentType, 'application/json') !== false) {
53+
54+
$streamWrite = fopen('php://temp', 'w+');
55+
$streamRead = fopen('php://input', 'r');
56+
if ($streamWrite && $streamRead) {
57+
stream_copy_to_stream($streamRead, $streamWrite);
58+
rewind($streamWrite);
59+
$body = (new StreamFactory)->createStreamFromResource($streamWrite);
60+
$params = json_decode($body->getContents(), true);
61+
$request = $request->withBody($body)->withParsedBody($params);
62+
}
63+
return $request;
64+
65+
}
5066
return $request;
5167
}
5268
}

0 commit comments

Comments
 (0)