Skip to content

Commit f6be6a2

Browse files
author
Milan Felix Šulc
authored
Merge pull request #6 from jiripudil/patch-1
Psr7RequestFactory::fromNette() preserves original raw body
2 parents 3109f2b + e4ce769 commit f6be6a2

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

src/Psr7RequestFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
namespace Contributte\Psr7;
44

5-
use GuzzleHttp\Psr7\LazyOpenStream;
65
use Nette\Http\IRequest;
76
use Nette\Http\RequestFactory;
7+
use function GuzzleHttp\Psr7\stream_for;
88

99
/**
1010
* @author Milan Felix Sulc <sulcmil@gmail.com>
@@ -32,7 +32,7 @@ public static function fromNette(IRequest $request)
3232
$request->getMethod(),
3333
$request->getUrl() ? Psr7UriFactory::fromNette($request->getUrl()) : NULL,
3434
$request->getHeaders(),
35-
new LazyOpenStream('php://input', 'r+'),
35+
stream_for($request->getRawBody()),
3636
str_replace('HTTP/', '', $request->getHeader('SERVER_PROTOCOL', '1.1'))
3737
);
3838

src/Psr7ServerRequestFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
namespace Contributte\Psr7;
44

5-
use GuzzleHttp\Psr7\LazyOpenStream;
65
use Nette\Http\IRequest;
76
use Nette\Http\RequestFactory;
7+
use function GuzzleHttp\Psr7\stream_for;
88

99
/**
1010
* @author Milan Felix Sulc <sulcmil@gmail.com>
@@ -40,7 +40,7 @@ public static function fromNette(IRequest $request)
4040
$request->getMethod(),
4141
$request->getUrl() ? Psr7UriFactory::fromNette($request->getUrl()) : NULL,
4242
$request->getHeaders(),
43-
new LazyOpenStream('php://input', 'r+'),
43+
stream_for($request->getRawBody()),
4444
str_replace('HTTP/', '', $request->getHeader('SERVER_PROTOCOL', '1.1')),
4545
$_SERVER
4646
);

tests/cases/Psr7ServerRequestFactory.phpt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,26 @@ test(function () {
3232
Assert::equal(['foo' => 'bar'], $request->getParsedBody());
3333
});
3434

35+
// RawBody
36+
test(function () {
37+
$nette = new Request(
38+
new UrlScript('https://nette.org'),
39+
NULL,
40+
NULL,
41+
NULL,
42+
NULL,
43+
NULL,
44+
NULL,
45+
NULL,
46+
NULL,
47+
function () {
48+
return '{"foo":"bar"}';
49+
}
50+
);
51+
$request = Psr7ServerRequestFactory::fromNette($nette);
52+
Assert::same('{"foo":"bar"}', (string) $request->getBody());
53+
});
54+
3555
// Global
3656
test(function () {
3757
$_SERVER['REQUEST_METHOD'] = 'POST';

0 commit comments

Comments
 (0)