From 428eee0d1a2f459872ca48e0f3b5a734fb16adba Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:18:37 +0100 Subject: [PATCH 1/2] TASK: Dont create memory resource in `StreamFactoryTrait::createStream` The `BufferStream` is simpler as it operates just on a simple string --- Neos.Http.Factories/Classes/StreamFactoryTrait.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Neos.Http.Factories/Classes/StreamFactoryTrait.php b/Neos.Http.Factories/Classes/StreamFactoryTrait.php index 6c79adcc84..8ea6d2c98b 100644 --- a/Neos.Http.Factories/Classes/StreamFactoryTrait.php +++ b/Neos.Http.Factories/Classes/StreamFactoryTrait.php @@ -3,8 +3,8 @@ namespace Neos\Http\Factories; +use GuzzleHttp\Psr7\BufferStream; use GuzzleHttp\Psr7\Stream; -use Psr\Http\Message\StreamFactoryInterface; use Psr\Http\Message\StreamInterface; /** @@ -17,11 +17,9 @@ trait StreamFactoryTrait */ public function createStream(string $content = ''): StreamInterface { - $fileHandle = fopen('php://temp', 'r+'); - fwrite($fileHandle, $content); - rewind($fileHandle); - - return $this->createStreamFromResource($fileHandle); + $stream = new BufferStream(); + $stream->write($content); + return $stream; } /** From a7ff07b3ac6d4fde45b8775c6c97073ca1c66469 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Fri, 15 Mar 2024 19:58:37 +0100 Subject: [PATCH 2/2] BUGFIX: Fix `ActionResponse` to handle `BufferStream` ``` Cannot seek a BufferStream GuzzleHttp\Psr7\BufferStream::seek(0) GuzzleHttp\Psr7\BufferStream::rewind() Neos\Flow\Mvc\ActionResponse::getContent() Neos\FluidAdaptor\Core\Widget\AbstractWidgetViewHelper::initiateSubRequest( ``` --- Neos.Flow/Classes/Mvc/ActionResponse.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Neos.Flow/Classes/Mvc/ActionResponse.php b/Neos.Flow/Classes/Mvc/ActionResponse.php index 8671eda844..32007f53e4 100644 --- a/Neos.Flow/Classes/Mvc/ActionResponse.php +++ b/Neos.Flow/Classes/Mvc/ActionResponse.php @@ -198,7 +198,9 @@ public function getHttpHeader(string $headerName) public function getContent(): string { $content = $this->content->getContents(); - $this->content->rewind(); + if ($this->content->isSeekable()) { + $this->content->rewind(); + } return $content; }