diff --git a/EventStreamResponse.php b/EventStreamResponse.php index fe1a2872e..e739c309c 100644 --- a/EventStreamResponse.php +++ b/EventStreamResponse.php @@ -48,7 +48,7 @@ public function __construct(?callable $callback = null, int $status = 200, array 'Cache-Control' => 'private, no-cache, no-store, must-revalidate, max-age=0', 'X-Accel-Buffering' => 'no', 'Pragma' => 'no-cache', - 'Expire' => '0', + 'Expires' => '0', ]; parent::__construct($callback, $status, $headers); diff --git a/Request.php b/Request.php index a8b21d768..9d74e2fa9 100644 --- a/Request.php +++ b/Request.php @@ -285,21 +285,18 @@ public function initialize(array $query = [], array $request = [], array $attrib */ public static function createFromGlobals(): static { - $request = self::createRequestFromFactory($_GET, $_POST, [], $_COOKIE, $_FILES, $_SERVER); - - if (!\in_array($request->server->get('REQUEST_METHOD', 'GET'), ['PUT', 'DELETE', 'PATCH', 'QUERY'], true)) { - return $request; + if (!\in_array($_SERVER['REQUEST_METHOD'] ?? null, ['PUT', 'DELETE', 'PATCH', 'QUERY'], true)) { + return self::createRequestFromFactory($_GET, $_POST, [], $_COOKIE, $_FILES, $_SERVER); } try { [$post, $files] = request_parse_body(); - - $request->request->add($post); - $request->files->add($files); } catch (\RequestParseBodyException) { + $post = $_POST; + $files = $_FILES; } - return $request; + return self::createRequestFromFactory($_GET, $post, [], $_COOKIE, $files, $_SERVER); } /** @@ -837,7 +834,7 @@ public function getScriptName(): string * * Suppose this request is instantiated from /mysite on localhost: * - * * http://localhost/mysite returns an empty string + * * http://localhost/mysite returns '/' * * http://localhost/mysite/about returns '/about' * * http://localhost/mysite/enco%20ded returns '/enco%20ded' * * http://localhost/mysite/about?var=1 returns '/about' @@ -1496,10 +1493,8 @@ public function getProtocolVersion(): ?string */ public function getContent(bool $asResource = false) { - $currentContentIsResource = \is_resource($this->content); - - if (true === $asResource) { - if ($currentContentIsResource) { + if ($asResource) { + if (\is_resource($this->content)) { rewind($this->content); return $this->content; @@ -1519,7 +1514,7 @@ public function getContent(bool $asResource = false) return fopen('php://input', 'r'); } - if ($currentContentIsResource) { + if (\is_resource($this->content)) { rewind($this->content); return stream_get_contents($this->content); diff --git a/Tests/EventStreamResponseTest.php b/Tests/EventStreamResponseTest.php index fa4988f91..b77040d39 100644 --- a/Tests/EventStreamResponseTest.php +++ b/Tests/EventStreamResponseTest.php @@ -29,6 +29,14 @@ public function testInitializationWithDefaultValues() $this->assertNull($response->getRetry()); } + public function testPresentOfExpiresHeader() + { + $response = new EventStreamResponse(); + + $this->assertTrue($response->headers->has('Expires')); + $this->assertSame('0', $response->headers->get('Expires')); + } + public function testStreamSingleEvent() { $response = new EventStreamResponse(function () { diff --git a/Tests/RequestTest.php b/Tests/RequestTest.php index 0dbb73a1f..2d3fc8c1b 100644 --- a/Tests/RequestTest.php +++ b/Tests/RequestTest.php @@ -3001,14 +3001,6 @@ public static function providePreferredFormatRfc9110(): iterable } } -class RequestContentProxy extends Request -{ - public function getContent($asResource = false) - { - return http_build_query(['content' => 'mycontent'], '', '&'); - } -} - class NewRequest extends Request { public function getFoo()