Skip to content

Commit 00e934b

Browse files
committed
👽 Support ecodev/graphql-upload v8
1 parent fb644ed commit 00e934b

File tree

3 files changed

+55
-18
lines changed

3 files changed

+55
-18
lines changed

src/Controller/GraphQLiteController.php

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
use Laminas\Diactoros\StreamFactory;
99
use Laminas\Diactoros\UploadedFileFactory;
1010
use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory;
11+
use TheCodingMachine\GraphQLite\Bundle\UploadMiddlewareUtils\DummyResponseWithRequest;
12+
use TheCodingMachine\GraphQLite\Bundle\UploadMiddlewareUtils\RequestExtractorMiddleware;
1113
use TheCodingMachine\GraphQLite\Http\HttpCodeDecider;
1214
use TheCodingMachine\GraphQLite\Http\HttpCodeDeciderInterface;
1315
use GraphQL\Executor\ExecutionResult;
@@ -30,24 +32,14 @@
3032
use function json_decode;
3133

3234
/**
33-
* Listens to every single request and forward Graphql requests to Graphql Webonix standardServer.
35+
* Listens to every single request and forwards GraphQL requests to Webonyx's \GraphQL\Server\StandardServer.
3436
*/
3537
class GraphQLiteController
3638
{
37-
/**
38-
* @var HttpMessageFactoryInterface
39-
*/
40-
private $httpMessageFactory;
41-
/** @var int */
42-
private $debug;
43-
/**
44-
* @var ServerConfig
45-
*/
46-
private $serverConfig;
47-
/**
48-
* @var HttpCodeDeciderInterface
49-
*/
50-
private $httpCodeDecider;
39+
private HttpMessageFactoryInterface $httpMessageFactory;
40+
private int $debug;
41+
private ServerConfig $serverConfig;
42+
private HttpCodeDeciderInterface $httpCodeDecider;
5143

5244
public function __construct(ServerConfig $serverConfig, ?HttpMessageFactoryInterface $httpMessageFactory = null, ?int $debug = null, ?HttpCodeDeciderInterface $httpCodeDecider = null)
5345
{
@@ -98,11 +90,12 @@ public function handleRequest(Request $request): Response
9890
$psr7Request = $psr7Request->withParsedBody($parsedBody);
9991
}
10092

101-
// Let's parse the request and adapt it for file uploads.
93+
// Let's parse the request and adapt it for file uploads using an anonymous PSR-15 middleware.
10294
if (class_exists(UploadMiddleware::class)) {
10395
$uploadMiddleware = new UploadMiddleware();
104-
$psr7Request = $uploadMiddleware->processRequest($psr7Request);
105-
\assert($psr7Request instanceof ServerRequestInterface);
96+
$dummyResponseWithRequest = $uploadMiddleware->process($psr7Request, new RequestExtractorMiddleware());
97+
assert($dummyResponseWithRequest instanceof DummyResponseWithRequest);
98+
$psr7Request = $dummyResponseWithRequest->getRequest();
10699
}
107100

108101
return $this->handlePsr7Request($psr7Request, $request);
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace TheCodingMachine\GraphQLite\Bundle\UploadMiddlewareUtils;
4+
5+
use Laminas\Diactoros\Response;
6+
use Psr\Http\Message\ServerRequestInterface;
7+
8+
/**
9+
* Class used to allow extraction of request from PSR-15 middleware
10+
*/
11+
class DummyResponseWithRequest extends Response
12+
{
13+
private ServerRequestInterface $request;
14+
15+
public function __construct(ServerRequestInterface $request)
16+
{
17+
parent::__construct();
18+
$this->request = $request;
19+
}
20+
21+
public function getRequest(): ServerRequestInterface
22+
{
23+
return $this->request;
24+
}
25+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace TheCodingMachine\GraphQLite\Bundle\UploadMiddlewareUtils;
4+
5+
use Psr\Http\Message\ResponseInterface;
6+
use Psr\Http\Message\ServerRequestInterface;
7+
use Psr\Http\Server\RequestHandlerInterface;
8+
9+
/**
10+
* Middleware to extract the request from the middleware chain
11+
*/
12+
class RequestExtractorMiddleware implements RequestHandlerInterface
13+
{
14+
public function handle(ServerRequestInterface $request): ResponseInterface
15+
{
16+
return new DummyResponseWithRequest($request);
17+
}
18+
19+
}

0 commit comments

Comments
 (0)