From 5920c487a9da5fc1b9006d8f5d6fe80c23df2f95 Mon Sep 17 00:00:00 2001 From: Daniel Lienert Date: Mon, 21 Dec 2020 16:55:20 +0100 Subject: [PATCH 1/2] TASK: Refactor to middleware for Flow 7 --- .../AddServerTimingMiddleware.php} | 26 +++++++++---------- .../MeasureServerTimingMiddleware.php} | 23 ++++++++-------- Configuration/Settings.yaml | 16 +++++------- composer.json | 2 +- 4 files changed, 32 insertions(+), 35 deletions(-) rename Classes/Http/{AddServerTimingHeaderComponent.php => Middleware/AddServerTimingMiddleware.php} (68%) rename Classes/Http/{MeasureServerTimingComponent.php => Middleware/MeasureServerTimingMiddleware.php} (53%) diff --git a/Classes/Http/AddServerTimingHeaderComponent.php b/Classes/Http/Middleware/AddServerTimingMiddleware.php similarity index 68% rename from Classes/Http/AddServerTimingHeaderComponent.php rename to Classes/Http/Middleware/AddServerTimingMiddleware.php index 07f3434..de6be59 100644 --- a/Classes/Http/AddServerTimingHeaderComponent.php +++ b/Classes/Http/Middleware/AddServerTimingMiddleware.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace t3n\Neos\Debug\Http; +namespace t3n\Neos\Debug\Http\Middleware; /** * This file is part of the t3n.Neos.Debugger package. @@ -15,14 +15,16 @@ */ use Neos\Flow\Annotations as Flow; -use Neos\Flow\Http\Component\ComponentContext; -use Neos\Flow\Http\Component\ComponentInterface; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\MiddlewareInterface; +use Psr\Http\Server\RequestHandlerInterface; use t3n\Neos\Debug\Service\DebugService; /** * Cache control header component */ -class AddServerTimingHeaderComponent implements ComponentInterface +class AddServerTimingMiddleware implements MiddlewareInterface { /** * @Flow\InjectConfiguration(path="serverTimingHeader.enabled") @@ -38,17 +40,15 @@ class AddServerTimingHeaderComponent implements ComponentInterface */ protected $debugService; - /** - * @inheritDoc - */ - public function handle(ComponentContext $componentContext) + + public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { + $response = $handler->handle($request); + if (! $this->enabled) { - return; + return $response; } - $response = $componentContext->getHttpResponse(); - $serverTiming = ''; $metrics = $this->debugService->getMetrics(); foreach ($metrics as $key => ['value' => $value, 'description' => $description]) { @@ -61,8 +61,6 @@ public function handle(ComponentContext $componentContext) } } - $modifiedResponse = $response->withAddedHeader('Server-Timing', $serverTiming); - - $componentContext->replaceHttpResponse($modifiedResponse); + return $response->withAddedHeader('Server-Timing', $serverTiming); } } diff --git a/Classes/Http/MeasureServerTimingComponent.php b/Classes/Http/Middleware/MeasureServerTimingMiddleware.php similarity index 53% rename from Classes/Http/MeasureServerTimingComponent.php rename to Classes/Http/Middleware/MeasureServerTimingMiddleware.php index f5d478d..5831d1b 100644 --- a/Classes/Http/MeasureServerTimingComponent.php +++ b/Classes/Http/Middleware/MeasureServerTimingMiddleware.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace t3n\Neos\Debug\Http; +namespace t3n\Neos\Debug\Http\Middleware; /** * This file is part of the t3n.Neos.Debugger package. @@ -15,11 +15,13 @@ */ use Neos\Flow\Annotations as Flow; -use Neos\Flow\Http\Component\ComponentContext; -use Neos\Flow\Http\Component\ComponentInterface; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\MiddlewareInterface; +use Psr\Http\Server\RequestHandlerInterface; use t3n\Neos\Debug\Service\DebugService; -class MeasureServerTimingComponent implements ComponentInterface +class MeasureServerTimingMiddleware implements MiddlewareInterface { /** * @Flow\InjectConfiguration(path="serverTimingHeader.enabled") @@ -35,15 +37,14 @@ class MeasureServerTimingComponent implements ComponentInterface */ protected $debugService; - /** - * @inheritDoc - */ - public function handle(ComponentContext $componentContext) + public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { - if (! $this->enabled) { - return; + $response = $handler->handle($request); + + if ($this->enabled) { + $this->debugService->startRequestTimer(); } - $this->debugService->startRequestTimer(); + return $response; } } diff --git a/Configuration/Settings.yaml b/Configuration/Settings.yaml index db51548..f0f95ea 100644 --- a/Configuration/Settings.yaml +++ b/Configuration/Settings.yaml @@ -18,15 +18,13 @@ Neos: Flow: http: - chain: - 'process': - chain: - t3n.Neos.Debug:MeasureServerTiming: - position: 'start' - component: 't3n\Neos\Debug\Http\MeasureServerTimingComponent' - t3n.Neos.Debug:AddServerTimingHeader: - position: 'after setHeader' - component: 't3n\Neos\Debug\Http\AddServerTimingHeaderComponent' + middlewares: + t3n.Neos.Debug:MeasureServerTiming: + position: 'start' + middleware: 't3n\Neos\Debug\Http\Middleware\MeasureServerTimingMiddleware' + t3n.Neos.Debug:AddServerTimingHeader: + position: 'after dispatch' + middleware: 't3n\Neos\Debug\Http\Middleware\AddServerTimingMiddleware' reflection: ignoredTags: diff --git a/composer.json b/composer.json index f211c50..33bb5f4 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,7 @@ "license": "MIT", "type": "neos-package", "require": { - "neos/neos": "~3.3.0 || ~4.0 || ~5.0" + "neos/neos": "^7.0" }, "autoload": { "psr-4": { From f6a568fe95e00a2af7ba22a84de23d5bc2b26db0 Mon Sep 17 00:00:00 2001 From: Sebastian Helzle Date: Tue, 22 Dec 2020 09:11:21 +0100 Subject: [PATCH 2/2] TASK: Fix linting issues --- Classes/Http/Middleware/AddServerTimingMiddleware.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Classes/Http/Middleware/AddServerTimingMiddleware.php b/Classes/Http/Middleware/AddServerTimingMiddleware.php index de6be59..87bbcbe 100644 --- a/Classes/Http/Middleware/AddServerTimingMiddleware.php +++ b/Classes/Http/Middleware/AddServerTimingMiddleware.php @@ -40,7 +40,6 @@ class AddServerTimingMiddleware implements MiddlewareInterface */ protected $debugService; - public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { $response = $handler->handle($request); @@ -61,6 +60,6 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface } } - return $response->withAddedHeader('Server-Timing', $serverTiming); + return $response->withAddedHeader('Server-Timing', $serverTiming); } }