|
2 | 2 |
|
3 | 3 | declare(strict_types=1); |
4 | 4 |
|
5 | | -namespace t3n\GraphQL\Upload\Mvc; |
| 5 | +namespace t3n\GraphQL\Upload\Http; |
6 | 6 |
|
7 | | -use Neos\Flow\Http\Component\ComponentContext; |
8 | | -use Neos\Flow\Http\Component\ComponentInterface; |
9 | 7 | use Neos\Flow\Http\Helper\UploadedFilesHelper; |
10 | | -use Neos\Flow\Mvc\Routing\RoutingComponent; |
11 | 8 | use Neos\Utility\Arrays; |
| 9 | +use Psr\Http\Message\ResponseInterface; |
12 | 10 | use Psr\Http\Message\ServerRequestInterface; |
| 11 | +use Psr\Http\Server\MiddlewareInterface; |
| 12 | +use Psr\Http\Server\RequestHandlerInterface; |
13 | 13 |
|
14 | | -class GraphQLUploadComponent implements ComponentInterface |
| 14 | +class GraphQLUploadMiddleware implements MiddlewareInterface |
15 | 15 | { |
16 | | - public function handle(ComponentContext $componentContext): void |
| 16 | + /** |
| 17 | + * @param ServerRequestInterface $request |
| 18 | + * @param RequestHandlerInterface $handler |
| 19 | + * @return ResponseInterface |
| 20 | + */ |
| 21 | + public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface |
17 | 22 | { |
18 | | - if ($this->isGraphQLRequest($componentContext)) { |
19 | | - $httpRequest = $componentContext->getHttpRequest(); |
20 | | - |
21 | | - if (strpos($httpRequest->getHeader('Content-Type')[0], 'multipart/form-data') === 0) { |
22 | | - $httpRequest = $this->parseUploadedFiles($httpRequest); |
23 | | - $componentContext->replaceHttpRequest($httpRequest); |
24 | | - } |
| 23 | + if ($this->isGraphQLRequest($request) && strpos($request->getHeader('Content-Type')[0], 'multipart/form-data') === 0) { |
| 24 | + $request = $this->parseUploadedFiles($request); |
25 | 25 | } |
| 26 | + return $handler->handle($request); |
26 | 27 | } |
27 | 28 |
|
28 | 29 | protected function parseUploadedFiles(ServerRequestInterface $request): ServerRequestInterface |
@@ -53,9 +54,9 @@ protected function parseUploadedFiles(ServerRequestInterface $request): ServerRe |
53 | 54 | return $request; |
54 | 55 | } |
55 | 56 |
|
56 | | - protected function isGraphQLRequest(ComponentContext $componentContext): bool |
| 57 | + protected function isGraphQLRequest(ServerRequestInterface $request): bool |
57 | 58 | { |
58 | | - $routingMatchResults = $componentContext->getParameter(RoutingComponent::class, 'matchResults') ?? []; |
| 59 | + $routingMatchResults = $request->getAttribute('matchResults') ?? []; |
59 | 60 | $package = $routingMatchResults['@package'] ?? null; |
60 | 61 | $controller = $routingMatchResults['@controller'] ?? null; |
61 | 62 | $action = $routingMatchResults['@action'] ?? null; |
|
0 commit comments