Skip to content
This repository was archived by the owner on Sep 12, 2025. It is now read-only.

Commit ca9ac50

Browse files
authored
Merge pull request #1 from Sebobo/task/flow-7-compatibility
!!! FEATURE: Flow 7 compatibility
2 parents 2ad99fc + 1814180 commit ca9ac50

File tree

3 files changed

+23
-23
lines changed

3 files changed

+23
-23
lines changed
Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,28 @@
22

33
declare(strict_types=1);
44

5-
namespace t3n\GraphQL\Upload\Mvc;
5+
namespace t3n\GraphQL\Upload\Http;
66

7-
use Neos\Flow\Http\Component\ComponentContext;
8-
use Neos\Flow\Http\Component\ComponentInterface;
97
use Neos\Flow\Http\Helper\UploadedFilesHelper;
10-
use Neos\Flow\Mvc\Routing\RoutingComponent;
118
use Neos\Utility\Arrays;
9+
use Psr\Http\Message\ResponseInterface;
1210
use Psr\Http\Message\ServerRequestInterface;
11+
use Psr\Http\Server\MiddlewareInterface;
12+
use Psr\Http\Server\RequestHandlerInterface;
1313

14-
class GraphQLUploadComponent implements ComponentInterface
14+
class GraphQLUploadMiddleware implements MiddlewareInterface
1515
{
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
1722
{
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);
2525
}
26+
return $handler->handle($request);
2627
}
2728

2829
protected function parseUploadedFiles(ServerRequestInterface $request): ServerRequestInterface
@@ -53,9 +54,9 @@ protected function parseUploadedFiles(ServerRequestInterface $request): ServerRe
5354
return $request;
5455
}
5556

56-
protected function isGraphQLRequest(ComponentContext $componentContext): bool
57+
protected function isGraphQLRequest(ServerRequestInterface $request): bool
5758
{
58-
$routingMatchResults = $componentContext->getParameter(RoutingComponent::class, 'matchResults') ?? [];
59+
$routingMatchResults = $request->getAttribute('matchResults') ?? [];
5960
$package = $routingMatchResults['@package'] ?? null;
6061
$controller = $routingMatchResults['@controller'] ?? null;
6162
$action = $routingMatchResults['@action'] ?? null;

Configuration/Settings.yaml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
Neos:
22
Flow:
33
http:
4-
chain:
5-
'process':
6-
chain:
7-
'graphqlUpload':
8-
component: 't3n\GraphQL\Upload\Mvc\GraphQLUploadComponent'
9-
position: 'before prepareActionRequest'
4+
middlewares:
5+
'graphqlUpload':
6+
position: 'before securityEntryPoint'
7+
middleware: 't3n\GraphQL\Upload\Http\GraphQLUploadMiddleware'
108

composer.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
"bin-dir": "bin"
77
},
88
"require": {
9-
"t3n/graphql": "^2.1",
10-
"php": ">=7.2",
9+
"neos/flow": "^7.0",
10+
"t3n/graphql": "^3.0",
11+
"php": "^7.3",
1112
"ext-json": "*"
1213
},
1314
"autoload": {

0 commit comments

Comments
 (0)