From 51143462094828f2c0956a3e4075ce969d0faba6 Mon Sep 17 00:00:00 2001 From: Guillaume Date: Thu, 11 Dec 2025 09:56:03 +0100 Subject: [PATCH] :alien: Support ecodev/graphql-upload v8 --- src/Controller/GraphQLiteController.php | 29 +++++++------------ .../DummyResponseWithRequest.php | 25 ++++++++++++++++ .../RequestExtractorMiddleware.php | 19 ++++++++++++ 3 files changed, 55 insertions(+), 18 deletions(-) create mode 100644 src/UploadMiddlewareUtils/DummyResponseWithRequest.php create mode 100644 src/UploadMiddlewareUtils/RequestExtractorMiddleware.php diff --git a/src/Controller/GraphQLiteController.php b/src/Controller/GraphQLiteController.php index f5fe84c..cb32a74 100644 --- a/src/Controller/GraphQLiteController.php +++ b/src/Controller/GraphQLiteController.php @@ -8,6 +8,8 @@ use Laminas\Diactoros\StreamFactory; use Laminas\Diactoros\UploadedFileFactory; use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory; +use TheCodingMachine\GraphQLite\Bundle\UploadMiddlewareUtils\DummyResponseWithRequest; +use TheCodingMachine\GraphQLite\Bundle\UploadMiddlewareUtils\RequestExtractorMiddleware; use TheCodingMachine\GraphQLite\Http\HttpCodeDecider; use TheCodingMachine\GraphQLite\Http\HttpCodeDeciderInterface; use GraphQL\Executor\ExecutionResult; @@ -30,24 +32,14 @@ use function json_decode; /** - * Listens to every single request and forward Graphql requests to Graphql Webonix standardServer. + * Listens to every single request and forwards GraphQL requests to Webonyx's \GraphQL\Server\StandardServer. */ class GraphQLiteController { - /** - * @var HttpMessageFactoryInterface - */ - private $httpMessageFactory; - /** @var int */ - private $debug; - /** - * @var ServerConfig - */ - private $serverConfig; - /** - * @var HttpCodeDeciderInterface - */ - private $httpCodeDecider; + private HttpMessageFactoryInterface $httpMessageFactory; + private int $debug; + private ServerConfig $serverConfig; + private HttpCodeDeciderInterface $httpCodeDecider; public function __construct(ServerConfig $serverConfig, ?HttpMessageFactoryInterface $httpMessageFactory = null, ?int $debug = null, ?HttpCodeDeciderInterface $httpCodeDecider = null) { @@ -98,11 +90,12 @@ public function handleRequest(Request $request): Response $psr7Request = $psr7Request->withParsedBody($parsedBody); } - // Let's parse the request and adapt it for file uploads. + // Let's parse the request and adapt it for file uploads by extracting it from the middleware. if (class_exists(UploadMiddleware::class)) { $uploadMiddleware = new UploadMiddleware(); - $psr7Request = $uploadMiddleware->processRequest($psr7Request); - \assert($psr7Request instanceof ServerRequestInterface); + $dummyResponseWithRequest = $uploadMiddleware->process($psr7Request, new RequestExtractorMiddleware()); + assert($dummyResponseWithRequest instanceof DummyResponseWithRequest); + $psr7Request = $dummyResponseWithRequest->getRequest(); } return $this->handlePsr7Request($psr7Request, $request); diff --git a/src/UploadMiddlewareUtils/DummyResponseWithRequest.php b/src/UploadMiddlewareUtils/DummyResponseWithRequest.php new file mode 100644 index 0000000..b9ea2d4 --- /dev/null +++ b/src/UploadMiddlewareUtils/DummyResponseWithRequest.php @@ -0,0 +1,25 @@ +request = $request; + } + + public function getRequest(): ServerRequestInterface + { + return $this->request; + } +} diff --git a/src/UploadMiddlewareUtils/RequestExtractorMiddleware.php b/src/UploadMiddlewareUtils/RequestExtractorMiddleware.php new file mode 100644 index 0000000..b7187b6 --- /dev/null +++ b/src/UploadMiddlewareUtils/RequestExtractorMiddleware.php @@ -0,0 +1,19 @@ +