From e85562289045cdc7c5c0c619811444e4b1f4dcd9 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Fri, 23 Jun 2017 12:29:11 +1200 Subject: [PATCH] NEW: Replace FlushRequestFilter with FlushMiddleware --- .upgrade.yml | 6 +++--- _config/requestprocessors.yml | 11 ++++------- _config/routes.yml | 2 -- .../16_Execution_Pipeline/01_Flushable.md | 2 +- .../{FlushRequestFilter.php => FlushMiddleware.php} | 13 ++++++------- src/Core/Flushable.php | 2 +- ...equestFilterTest.php => FlushMiddlewareTest.php} | 4 ++-- .../TestFlushable.php | 2 +- 8 files changed, 18 insertions(+), 24 deletions(-) rename src/Control/{FlushRequestFilter.php => FlushMiddleware.php} (62%) rename tests/php/Control/{FlushRequestFilterTest.php => FlushMiddlewareTest.php} (74%) rename tests/php/Control/{FlushRequestFilterTest => FlushMiddlewareTest}/TestFlushable.php (79%) diff --git a/.upgrade.yml b/.upgrade.yml index 74caf9ebc..c04ad9e26 100644 --- a/.upgrade.yml +++ b/.upgrade.yml @@ -261,7 +261,7 @@ mappings: Cookie_Backend: SilverStripe\Control\Cookie_Backend CookieJar: SilverStripe\Control\CookieJar Director: SilverStripe\Control\Director - FlushRequestFilter: SilverStripe\Control\FlushRequestFilter + FlushRequestFilter: SilverStripe\Control\FlushMiddleware HTTP: SilverStripe\Control\HTTP SS_HTTPRequest: SilverStripe\Control\HTTPRequest SS_HTTPResponse: SilverStripe\Control\HTTPResponse @@ -496,8 +496,8 @@ mappings: TestRequestFilter: SilverStripe\Control\Tests\DirectorTest\TestRequestFilter DirectorTestRequest_Controller: SilverStripe\Control\Tests\DirectorTest\TestController FakeController: SilverStripe\Control\Tests\FakeController - FlushRequestFilterTest: SilverStripe\Control\Tests\FlushRequestFilterTest - FlushRequestFilterTest_Flushable: SilverStripe\Control\Tests\FlushRequestFilterTest\TestFlushable + FlushRequestFilterTest: SilverStripe\Control\Tests\FlushMiddlewareTest + FlushRequestFilterTest_Flushable: SilverStripe\Control\Tests\FlushMiddlewareTest\TestFlushable HTTPRequestTest: SilverStripe\Control\Tests\HTTPRequestTest HTTPResponseTest: SilverStripe\Control\Tests\HTTPResponseTest HTTPTest: SilverStripe\Control\Tests\HTTPTest diff --git a/_config/requestprocessors.yml b/_config/requestprocessors.yml index 66846879b..5c53964b1 100644 --- a/_config/requestprocessors.yml +++ b/_config/requestprocessors.yml @@ -1,11 +1,8 @@ --- Name: requestprocessors --- -SilverStripe\Core\Injector\Injector: - FlushRequestFilter: - class: SilverStripe\Control\FlushRequestFilter - SilverStripe\Control\RequestProcessor: - properties: - filters: - - '%$FlushRequestFilter' +SilverStripe\Control\Director: + middlewares: + RequestProcessor: 'SilverStripe\Control\RequestProcessor' + FlushMiddleware: '%$SilverStripe\Control\FlushMiddleware' diff --git a/_config/routes.yml b/_config/routes.yml index f15949722..86c35b233 100644 --- a/_config/routes.yml +++ b/_config/routes.yml @@ -2,8 +2,6 @@ Name: rootroutes --- SilverStripe\Control\Director: - middlewares: - RequestProcessor: 'SilverStripe\Control\RequestProcessor' rules: '': SilverStripe\Control\Controller --- diff --git a/docs/en/02_Developer_Guides/16_Execution_Pipeline/01_Flushable.md b/docs/en/02_Developer_Guides/16_Execution_Pipeline/01_Flushable.md index a6cd93302..c3b88d14c 100644 --- a/docs/en/02_Developer_Guides/16_Execution_Pipeline/01_Flushable.md +++ b/docs/en/02_Developer_Guides/16_Execution_Pipeline/01_Flushable.md @@ -6,7 +6,7 @@ summary: Allows a class to define it's own flush functionality. ## Introduction Allows a class to define it's own flush functionality, which is triggered when `flush=1` is requested in the URL. -[api:FlushRequestFilter] is run before a request is made, calling `flush()` statically on all +[api:FlushMiddleware] is run before a request is made, calling `flush()` statically on all implementors of [api:Flushable]. ## Usage diff --git a/src/Control/FlushRequestFilter.php b/src/Control/FlushMiddleware.php similarity index 62% rename from src/Control/FlushRequestFilter.php rename to src/Control/FlushMiddleware.php index 2f7c0a694..e29e4448a 100644 --- a/src/Control/FlushRequestFilter.php +++ b/src/Control/FlushMiddleware.php @@ -8,20 +8,19 @@ use SilverStripe\Core\ClassInfo; /** * Triggers a call to flush() on all implementors of Flushable. */ -class FlushRequestFilter implements RequestFilter +class FlushMiddleware implements HTTPMiddleware { - public function preRequest(HTTPRequest $request) + /** + * @inheritdoc + */ + public function process(HTTPRequest $request, callable $delegate) { if (array_key_exists('flush', $request->getVars())) { foreach (ClassInfo::implementorsOf(Flushable::class) as $class) { $class::flush(); } } - return true; - } - public function postRequest(HTTPRequest $request, HTTPResponse $response) - { - return true; + return $delegate($request); } } diff --git a/src/Core/Flushable.php b/src/Core/Flushable.php index 94b6674f8..fe605f398 100644 --- a/src/Core/Flushable.php +++ b/src/Core/Flushable.php @@ -14,7 +14,7 @@ interface Flushable * parameter has been set. Each class that implements Flushable implements * this function which looks after it's own specific flushing functionality. * - * @see FlushRequestFilter + * @see FlushMiddleware */ public static function flush(); } diff --git a/tests/php/Control/FlushRequestFilterTest.php b/tests/php/Control/FlushMiddlewareTest.php similarity index 74% rename from tests/php/Control/FlushRequestFilterTest.php rename to tests/php/Control/FlushMiddlewareTest.php index 8644cc014..df141f1dd 100644 --- a/tests/php/Control/FlushRequestFilterTest.php +++ b/tests/php/Control/FlushMiddlewareTest.php @@ -2,10 +2,10 @@ namespace SilverStripe\Control\Tests; -use SilverStripe\Control\Tests\FlushRequestFilterTest\TestFlushable; +use SilverStripe\Control\Tests\FlushMiddlewareTest\TestFlushable; use SilverStripe\Dev\FunctionalTest; -class FlushRequestFilterTest extends FunctionalTest +class FlushMiddlewareTest extends FunctionalTest { /** * Assert that classes that implement flushable are called diff --git a/tests/php/Control/FlushRequestFilterTest/TestFlushable.php b/tests/php/Control/FlushMiddlewareTest/TestFlushable.php similarity index 79% rename from tests/php/Control/FlushRequestFilterTest/TestFlushable.php rename to tests/php/Control/FlushMiddlewareTest/TestFlushable.php index c867696f0..7a28aa6ba 100644 --- a/tests/php/Control/FlushRequestFilterTest/TestFlushable.php +++ b/tests/php/Control/FlushMiddlewareTest/TestFlushable.php @@ -1,6 +1,6 @@