From 0278d52cbe9a8ea473cab1792239ff7bed5eec04 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Mon, 28 May 2018 23:21:22 +0200 Subject: [PATCH 1/7] Require PHP 7.1 This will be the last PHP requirement upgrade for a while, at least until stable (and therefore until the next major release). We have decided to do this now, for the following reasons: - We want to support MariaDB (and the compatible release of doctrine/dbal requires 7.1 as well). - We prefer to upgrade to Laravel 5.6 sooner rather than later. - Using the PSR-15 middleware standard is easier this way, as we do not have to switch from zend-stratigility to another PSR-15 implementation. (Stratigility v3, which implements the final standard, requires 7.1.) --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 27c91e627..6d01cf6e0 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,7 @@ "docs": "http://flarum.org/docs" }, "require": { - "php": ">=7.0", + "php": ">=7.1", "dflydev/fig-cookies": "^1.0.2", "doctrine/dbal": "^2.5", "components/font-awesome": "^5.0.6", From 5d0ebde6b8b5dcfeec49268056420fd35e2a32c7 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Mon, 28 May 2018 23:41:32 +0200 Subject: [PATCH 2/7] travis: Remove PHP 7.0 from build matrix --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3a288f4c7..58beeeeac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,6 @@ services: - mysql php: - - 7.0 - 7.1 - 7.2 From 3680d88fb76ddc4277d3062e313aaab8c2f63279 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Tue, 29 May 2018 00:17:13 +0200 Subject: [PATCH 3/7] Use PSR-15 middleware standard This finally adopts the new standardized interfaces instead of the work-in-progress ones with the `Interop\` prefix. Since we have now updated to PHP 7.1, we can also use Stratigility 3.0 as the middleware dispatcher. --- composer.json | 7 ++-- .../Middleware/RequireAdministrateAbility.php | 11 ++--- src/Api/Middleware/FakeHttpMethods.php | 11 ++--- src/Api/Middleware/HandleErrors.php | 14 +++---- .../Middleware/AuthenticateWithHeader.php | 11 ++--- .../Middleware/AuthenticateWithSession.php | 11 ++--- src/Http/Middleware/CollectGarbage.php | 11 ++--- src/Http/Middleware/DispatchRoute.php | 11 ++--- src/Http/Middleware/HandleErrors.php | 14 +++---- src/Http/Middleware/ParseJsonBody.php | 11 ++--- src/Http/Middleware/RememberFromCookie.php | 11 ++--- src/Http/Middleware/SetLocale.php | 11 ++--- .../Middleware/ShareErrorsFromSession.php | 11 ++--- src/Http/Middleware/StartSession.php | 10 ++--- src/Http/Server.php | 42 +++++++++++-------- 15 files changed, 101 insertions(+), 96 deletions(-) diff --git a/composer.json b/composer.json index 6d01cf6e0..9039b4d34 100644 --- a/composer.json +++ b/composer.json @@ -47,6 +47,8 @@ "nikic/fast-route": "^0.6", "oyejorge/less.php": "~1.5", "psr/http-message": "^1.0", + "psr/http-server-handler": "^1.0", + "psr/http-server-middleware": "^1.0", "symfony/config": "^3.3", "symfony/console": "^3.3", "symfony/http-foundation": "^3.3", @@ -54,9 +56,8 @@ "symfony/yaml": "^3.3", "s9e/text-formatter": "^0.8.1", "tobscure/json-api": "^0.3.0", - "zendframework/zend-diactoros": "^1.6", - "zendframework/zend-stratigility": "^2.2", - "http-interop/http-middleware": "^0.4.0" + "zendframework/zend-diactoros": "^1.7", + "zendframework/zend-stratigility": "^3.0" }, "require-dev": { "mockery/mockery": "^0.9.4", diff --git a/src/Admin/Middleware/RequireAdministrateAbility.php b/src/Admin/Middleware/RequireAdministrateAbility.php index 63758f979..7d478e41c 100644 --- a/src/Admin/Middleware/RequireAdministrateAbility.php +++ b/src/Admin/Middleware/RequireAdministrateAbility.php @@ -12,18 +12,19 @@ namespace Flarum\Admin\Middleware; use Flarum\User\AssertPermissionTrait; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; +use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; -class RequireAdministrateAbility implements MiddlewareInterface +class RequireAdministrateAbility implements Middleware { use AssertPermissionTrait; - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { $this->assertAdmin($request->getAttribute('actor')); - return $delegate->process($request); + return $handler->handle($request); } } diff --git a/src/Api/Middleware/FakeHttpMethods.php b/src/Api/Middleware/FakeHttpMethods.php index 19dacef6f..2791ae06a 100644 --- a/src/Api/Middleware/FakeHttpMethods.php +++ b/src/Api/Middleware/FakeHttpMethods.php @@ -11,15 +11,16 @@ namespace Flarum\Api\Middleware; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; +use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; -class FakeHttpMethods implements MiddlewareInterface +class FakeHttpMethods implements Middleware { const HEADER_NAME = 'x-http-method-override'; - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { if ($request->getMethod() === 'POST' && $request->hasHeader(self::HEADER_NAME)) { $fakeMethod = $request->getHeaderLine(self::HEADER_NAME); @@ -27,6 +28,6 @@ class FakeHttpMethods implements MiddlewareInterface $request = $request->withMethod(strtoupper($fakeMethod)); } - return $delegate->process($request); + return $handler->handle($request); } } diff --git a/src/Api/Middleware/HandleErrors.php b/src/Api/Middleware/HandleErrors.php index 6f61b75f3..bba861ac2 100644 --- a/src/Api/Middleware/HandleErrors.php +++ b/src/Api/Middleware/HandleErrors.php @@ -13,12 +13,12 @@ namespace Flarum\Api\Middleware; use Exception; use Flarum\Api\ErrorHandler; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; -class HandleErrors implements MiddlewareInterface +class HandleErrors implements Middleware { /** * @var ErrorHandler @@ -35,15 +35,11 @@ class HandleErrors implements MiddlewareInterface /** * Catch all errors that happen during further middleware execution. - * - * @param Request $request - * @param DelegateInterface $delegate - * @return Response */ - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { try { - return $delegate->process($request); + return $handler->handle($request); } catch (Exception $e) { return $this->errorHandler->handle($e); } diff --git a/src/Http/Middleware/AuthenticateWithHeader.php b/src/Http/Middleware/AuthenticateWithHeader.php index 31d112744..658d064ab 100644 --- a/src/Http/Middleware/AuthenticateWithHeader.php +++ b/src/Http/Middleware/AuthenticateWithHeader.php @@ -14,15 +14,16 @@ namespace Flarum\Http\Middleware; use Flarum\Api\ApiKey; use Flarum\Http\AccessToken; use Flarum\User\User; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; +use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; -class AuthenticateWithHeader implements MiddlewareInterface +class AuthenticateWithHeader implements Middleware { const TOKEN_PREFIX = 'Token '; - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { $headerLine = $request->getHeaderLine('authorization'); @@ -50,7 +51,7 @@ class AuthenticateWithHeader implements MiddlewareInterface } } - return $delegate->process($request); + return $handler->handle($request); } private function getUser($string) diff --git a/src/Http/Middleware/AuthenticateWithSession.php b/src/Http/Middleware/AuthenticateWithSession.php index 4c780925b..712185266 100644 --- a/src/Http/Middleware/AuthenticateWithSession.php +++ b/src/Http/Middleware/AuthenticateWithSession.php @@ -14,13 +14,14 @@ namespace Flarum\Http\Middleware; use Flarum\User\Guest; use Flarum\User\User; use Illuminate\Contracts\Session\Session; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; +use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; -class AuthenticateWithSession implements MiddlewareInterface +class AuthenticateWithSession implements Middleware { - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { $session = $request->getAttribute('session'); @@ -30,7 +31,7 @@ class AuthenticateWithSession implements MiddlewareInterface $request = $request->withAttribute('actor', $actor); - return $delegate->process($request); + return $handler->handle($request); } private function getActor(Session $session) diff --git a/src/Http/Middleware/CollectGarbage.php b/src/Http/Middleware/CollectGarbage.php index f4882c9fb..e32b99c1b 100644 --- a/src/Http/Middleware/CollectGarbage.php +++ b/src/Http/Middleware/CollectGarbage.php @@ -16,12 +16,13 @@ use Flarum\User\AuthToken; use Flarum\User\EmailToken; use Flarum\User\PasswordToken; use Illuminate\Contracts\Config\Repository as ConfigRepository; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; +use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; use SessionHandlerInterface; -class CollectGarbage implements MiddlewareInterface +class CollectGarbage implements Middleware { /** * @var SessionHandlerInterface @@ -39,11 +40,11 @@ class CollectGarbage implements MiddlewareInterface $this->sessionConfig = $config->get('session'); } - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { $this->collectGarbageSometimes(); - return $delegate->process($request); + return $handler->handle($request); } private function collectGarbageSometimes() diff --git a/src/Http/Middleware/DispatchRoute.php b/src/Http/Middleware/DispatchRoute.php index cc5e94750..ee4670d40 100644 --- a/src/Http/Middleware/DispatchRoute.php +++ b/src/Http/Middleware/DispatchRoute.php @@ -15,12 +15,12 @@ use FastRoute\Dispatcher; use Flarum\Http\Exception\MethodNotAllowedException; use Flarum\Http\Exception\RouteNotFoundException; use Flarum\Http\RouteCollection; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; -class DispatchRoute implements MiddlewareInterface +class DispatchRoute implements Middleware { /** * @var RouteCollection @@ -45,13 +45,10 @@ class DispatchRoute implements MiddlewareInterface /** * Dispatch the given request to our route collection. * - * @param Request $request - * @param DelegateInterface $delegate - * @return Response * @throws MethodNotAllowedException * @throws RouteNotFoundException */ - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { $method = $request->getMethod(); $uri = $request->getUri()->getPath() ?: '/'; diff --git a/src/Http/Middleware/HandleErrors.php b/src/Http/Middleware/HandleErrors.php index a41ebf05e..8df217bf3 100644 --- a/src/Http/Middleware/HandleErrors.php +++ b/src/Http/Middleware/HandleErrors.php @@ -15,15 +15,15 @@ use Exception; use Flarum\Settings\SettingsRepositoryInterface; use Franzl\Middleware\Whoops\WhoopsRunner; use Illuminate\Contracts\View\Factory as ViewFactory; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; use Psr\Log\LoggerInterface; use Symfony\Component\Translation\TranslatorInterface; use Zend\Diactoros\Response\HtmlResponse; -class HandleErrors implements MiddlewareInterface +class HandleErrors implements Middleware { /** * @var ViewFactory @@ -68,15 +68,11 @@ class HandleErrors implements MiddlewareInterface /** * Catch all errors that happen during further middleware execution. - * - * @param Request $request - * @param DelegateInterface $delegate - * @return Response */ - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { try { - return $delegate->process($request); + return $handler->handle($request); } catch (Exception $e) { if ($this->debug) { return WhoopsRunner::handle($e, $request); diff --git a/src/Http/Middleware/ParseJsonBody.php b/src/Http/Middleware/ParseJsonBody.php index f4ffb3782..8137eb0cc 100644 --- a/src/Http/Middleware/ParseJsonBody.php +++ b/src/Http/Middleware/ParseJsonBody.php @@ -11,13 +11,14 @@ namespace Flarum\Http\Middleware; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; +use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; -class ParseJsonBody implements MiddlewareInterface +class ParseJsonBody implements Middleware { - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { if (str_contains($request->getHeaderLine('content-type'), 'json')) { $input = json_decode($request->getBody(), true); @@ -25,6 +26,6 @@ class ParseJsonBody implements MiddlewareInterface $request = $request->withParsedBody($input ?: []); } - return $delegate->process($request); + return $handler->handle($request); } } diff --git a/src/Http/Middleware/RememberFromCookie.php b/src/Http/Middleware/RememberFromCookie.php index 335c43198..bf5e75424 100644 --- a/src/Http/Middleware/RememberFromCookie.php +++ b/src/Http/Middleware/RememberFromCookie.php @@ -13,11 +13,12 @@ namespace Flarum\Http\Middleware; use Flarum\Http\AccessToken; use Flarum\Http\CookieFactory; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; +use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; -class RememberFromCookie implements MiddlewareInterface +class RememberFromCookie implements Middleware { /** * @var CookieFactory @@ -32,7 +33,7 @@ class RememberFromCookie implements MiddlewareInterface $this->cookie = $cookie; } - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { $id = array_get($request->getCookieParams(), $this->cookie->getName('remember')); @@ -48,6 +49,6 @@ class RememberFromCookie implements MiddlewareInterface } } - return $delegate->process($request); + return $handler->handle($request); } } diff --git a/src/Http/Middleware/SetLocale.php b/src/Http/Middleware/SetLocale.php index 9731a8821..bcb37a9da 100644 --- a/src/Http/Middleware/SetLocale.php +++ b/src/Http/Middleware/SetLocale.php @@ -12,11 +12,12 @@ namespace Flarum\Http\Middleware; use Flarum\Locale\LocaleManager; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; +use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; -class SetLocale implements MiddlewareInterface +class SetLocale implements Middleware { /** * @var LocaleManager @@ -31,7 +32,7 @@ class SetLocale implements MiddlewareInterface $this->locales = $locales; } - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { $actor = $request->getAttribute('actor'); @@ -45,6 +46,6 @@ class SetLocale implements MiddlewareInterface $this->locales->setLocale($locale); } - return $delegate->process($request); + return $handler->handle($request); } } diff --git a/src/Http/Middleware/ShareErrorsFromSession.php b/src/Http/Middleware/ShareErrorsFromSession.php index 774fdf0d5..d53a1d188 100644 --- a/src/Http/Middleware/ShareErrorsFromSession.php +++ b/src/Http/Middleware/ShareErrorsFromSession.php @@ -13,16 +13,17 @@ namespace Flarum\Http\Middleware; use Illuminate\Contracts\View\Factory as ViewFactory; use Illuminate\Support\ViewErrorBag; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; +use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; /** * Inspired by Illuminate\View\Middleware\ShareErrorsFromSession. * * @author Taylor Otwell */ -class ShareErrorsFromSession implements MiddlewareInterface +class ShareErrorsFromSession implements Middleware { /** * @var ViewFactory @@ -37,7 +38,7 @@ class ShareErrorsFromSession implements MiddlewareInterface $this->view = $view; } - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { $session = $request->getAttribute('session'); @@ -54,6 +55,6 @@ class ShareErrorsFromSession implements MiddlewareInterface $session->remove('errors'); - return $delegate->process($request); + return $handler->handle($request); } } diff --git a/src/Http/Middleware/StartSession.php b/src/Http/Middleware/StartSession.php index 4fbd1b8e6..f5aee1573 100644 --- a/src/Http/Middleware/StartSession.php +++ b/src/Http/Middleware/StartSession.php @@ -16,13 +16,13 @@ use Flarum\Http\CookieFactory; use Illuminate\Contracts\Config\Repository as ConfigRepository; use Illuminate\Contracts\Session\Session; use Illuminate\Session\Store; -use Interop\Http\ServerMiddleware\DelegateInterface; -use Interop\Http\ServerMiddleware\MiddlewareInterface; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; use SessionHandlerInterface; -class StartSession implements MiddlewareInterface +class StartSession implements Middleware { /** * @var SessionHandlerInterface @@ -51,7 +51,7 @@ class StartSession implements MiddlewareInterface $this->config = $config->get('session'); } - public function process(Request $request, DelegateInterface $delegate) + public function process(Request $request, Handler $handler): Response { $request = $request->withAttribute( 'session', @@ -59,7 +59,7 @@ class StartSession implements MiddlewareInterface ); $session->start(); - $response = $delegate->process($request); + $response = $handler->handle($request); $session->save(); $response = $this->withCsrfTokenHeader($response, $session); diff --git a/src/Http/Server.php b/src/Http/Server.php index 222d177fe..9583d9180 100644 --- a/src/Http/Server.php +++ b/src/Http/Server.php @@ -18,16 +18,17 @@ use Flarum\Http\Middleware\HandleErrors; use Flarum\Http\Middleware\StartSession; use Flarum\Install\InstallServiceProvider; use Flarum\Update\UpdateServiceProvider; -use Interop\Http\ServerMiddleware\MiddlewareInterface; -use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Message\ResponseInterface as Response; +use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\MiddlewareInterface as Middleware; +use Psr\Http\Server\RequestHandlerInterface as Handler; use Zend\Diactoros\Response\HtmlResponse; use Zend\Diactoros\Server as DiactorosServer; use Zend\Stratigility\MiddlewarePipe; -use Zend\Stratigility\NoopFinalHandler; +use function Zend\Stratigility\middleware; use function Zend\Stratigility\path; -class Server +class Server implements Middleware, Handler { /** * @param Site $site @@ -46,33 +47,38 @@ class Server public function listen() { DiactorosServer::createServer( - $this, + [$this, 'handle'], $_SERVER, $_GET, $_POST, $_COOKIE, $_FILES - )->listen(new NoopFinalHandler()); + )->listen(); } /** - * Use as PSR-7 middleware. - * - * @param ServerRequestInterface $request - * @param ResponseInterface $response - * @param callable $out - * @return ResponseInterface + * Use as PSR-15 middleware. */ - public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $out) + public function process(Request $request, Handler $handler): Response { $middleware = $this->getMiddleware($request->getUri()->getPath()); - return $middleware($request, $response, $out); + return $middleware->process($request, $handler); + } + + /** + * Use as PSR-15 request handler. + */ + public function handle(Request $request): Response + { + $middleware = $this->getMiddleware($request->getUri()->getPath()); + + return $middleware->handle($request); } /** * @param string $requestPath - * @return MiddlewareInterface + * @return MiddlewarePipe */ protected function getMiddleware($requestPath) { @@ -126,9 +132,9 @@ class Server protected function getMaintenanceMiddleware(MiddlewarePipe $pipe) { - $pipe->pipe(function () { + $pipe->pipe(middleware(function () { return new HtmlResponse(file_get_contents($this->getErrorDir().'/503.html', 503)); - }); + })); // TODO: FOR API render JSON-API error document for HTTP 503 From b3cbc5d1bd6cf589c3839deae51f333776436a60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20Klabbers?= Date: Tue, 29 May 2018 05:51:22 +0200 Subject: [PATCH 4/7] [wip] 1211 mariadb compatibility (#1440) fixes #1211 As we've already upgraded our minimum requirement to 7.1 there's no current need to force a constraint on dbal 2.7+. --- .travis.yml | 25 +++++++++++++++++++------ phpunit.xml | 5 +++++ tests/Test/Concerns/CreatesForum.php | 7 ++++--- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index 58beeeeac..8bfa212b6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,12 @@ language: php +sudo: false env: - - DB_USERNAME=travis -services: - - mysql + global: + - DB=mariadb + +addons: + mariadb: '10.2' php: - 7.1 @@ -11,8 +14,20 @@ php: matrix: fast_finish: true + include: + - php: 7.1 + addons: # to prevent mariadb + services: mysql + env: + - DB=mysql + - php: 7.2 + addons: # to prevent mariadb + services: mysql + env: + - DB=mysql + before_install: - - mysql -e 'CREATE DATABASE flarum;' + - if [[ "$DB" == "mysql" || "$DB" == "mariadb" ]]; then mysql -e 'CREATE DATABASE flarum;'; fi before_script: - composer self-update - composer install @@ -26,5 +41,3 @@ notifications: after_success: - bash <(curl -s https://codecov.io/bash) - -sudo: false diff --git a/phpunit.xml b/phpunit.xml index 6bdd4b7c7..9a6492957 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -19,4 +19,9 @@ ./tests/Install + + + ./src/ + + diff --git a/tests/Test/Concerns/CreatesForum.php b/tests/Test/Concerns/CreatesForum.php index 6be88436d..ac4029731 100644 --- a/tests/Test/Concerns/CreatesForum.php +++ b/tests/Test/Concerns/CreatesForum.php @@ -75,9 +75,10 @@ trait CreatesForum $data->setSetting('mail_driver', 'log'); $database = $data->getDatabaseConfiguration(); - $database['database'] = env('DB_DATABASE', 'flarum'); - $database['username'] = env('DB_USERNAME', 'root'); - $database['password'] = env('DB_PASSWORD', ''); + $database['host'] = env('DB_HOST', $database['host']); + $database['database'] = env('DB_DATABASE', $database['database']); + $database['username'] = env('DB_USERNAME', $database['username']); + $database['password'] = env('DB_PASSWORD', $database['password']); $data->setDatabaseConfiguration($database); $this->configuration = $data; From b3d45fd6f83568baf06fcdb2bec5807cad404932 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Wed, 30 May 2018 00:12:06 +0200 Subject: [PATCH 5/7] Replace ControllerInterface with PSR-15 interface The custom interface already had the same signature as the one from the standard (except for the return type hint), so why not use that one now? :) --- src/Api/Client.php | 8 +++---- .../Controller/AbstractCreateController.php | 3 ++- .../Controller/AbstractDeleteController.php | 7 +++--- .../AbstractSerializeController.php | 7 +++--- .../Controller/ForgotPasswordController.php | 7 +++--- .../SendConfirmationEmailController.php | 7 +++--- .../Controller/SetPermissionController.php | 7 +++--- src/Api/Controller/SetSettingsController.php | 7 +++--- src/Api/Controller/TokenController.php | 7 +++--- .../Controller/UpdateExtensionController.php | 7 +++--- .../Controller/AbstractOAuth2Controller.php | 9 ++++---- .../Controller/ConfirmEmailController.php | 9 ++++---- src/Forum/Controller/LogInController.php | 7 +++--- src/Forum/Controller/LogOutController.php | 9 ++++---- src/Forum/Controller/RegisterController.php | 7 +++--- .../Controller/SavePasswordController.php | 9 ++++---- .../Controller/AbstractHtmlController.php | 6 +++-- src/Http/Controller/ControllerInterface.php | 23 ------------------- src/Http/ControllerRouteHandler.php | 8 +++---- src/Install/Controller/InstallController.php | 9 ++++---- src/Update/Controller/UpdateController.php | 9 ++++---- .../Api/Controller/ApiControllerTestCase.php | 4 ++-- 22 files changed, 86 insertions(+), 90 deletions(-) delete mode 100644 src/Http/Controller/ControllerInterface.php diff --git a/src/Api/Client.php b/src/Api/Client.php index 18309d3de..4e23bf5a1 100644 --- a/src/Api/Client.php +++ b/src/Api/Client.php @@ -13,10 +13,10 @@ namespace Flarum\Api; use Exception; use Flarum\Foundation\Application; -use Flarum\Http\Controller\ControllerInterface; use Flarum\User\User; use InvalidArgumentException; use Psr\Http\Message\ResponseInterface; +use Psr\Http\Server\RequestHandlerInterface; use Zend\Diactoros\ServerRequestFactory; class Client @@ -43,7 +43,7 @@ class Client /** * Execute the given API action class, pass the input and return its response. * - * @param string|ControllerInterface $controller + * @param string|RequestHandlerInterface $controller * @param User|null $actor * @param array $queryParams * @param array $body @@ -60,9 +60,9 @@ class Client $controller = $this->app->make($controller); } - if (! ($controller instanceof ControllerInterface)) { + if (! ($controller instanceof RequestHandlerInterface)) { throw new InvalidArgumentException( - 'Endpoint must be an instance of '.ControllerInterface::class + 'Endpoint must be an instance of '.RequestHandlerInterface::class ); } diff --git a/src/Api/Controller/AbstractCreateController.php b/src/Api/Controller/AbstractCreateController.php index bb31ede70..d8e41b6dc 100644 --- a/src/Api/Controller/AbstractCreateController.php +++ b/src/Api/Controller/AbstractCreateController.php @@ -11,6 +11,7 @@ namespace Flarum\Api\Controller; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; abstract class AbstractCreateController extends AbstractShowController @@ -18,7 +19,7 @@ abstract class AbstractCreateController extends AbstractShowController /** * {@inheritdoc} */ - public function handle(ServerRequestInterface $request) + public function handle(ServerRequestInterface $request): ResponseInterface { return parent::handle($request)->withStatus(201); } diff --git a/src/Api/Controller/AbstractDeleteController.php b/src/Api/Controller/AbstractDeleteController.php index 0530a4270..f7dcee241 100644 --- a/src/Api/Controller/AbstractDeleteController.php +++ b/src/Api/Controller/AbstractDeleteController.php @@ -11,16 +11,17 @@ namespace Flarum\Api\Controller; -use Flarum\Http\Controller\ControllerInterface; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; use Zend\Diactoros\Response\EmptyResponse; -abstract class AbstractDeleteController implements ControllerInterface +abstract class AbstractDeleteController implements RequestHandlerInterface { /** * {@inheritdoc} */ - public function handle(ServerRequestInterface $request) + public function handle(ServerRequestInterface $request): ResponseInterface { $this->delete($request); diff --git a/src/Api/Controller/AbstractSerializeController.php b/src/Api/Controller/AbstractSerializeController.php index d51fa6d00..bc04cacce 100644 --- a/src/Api/Controller/AbstractSerializeController.php +++ b/src/Api/Controller/AbstractSerializeController.php @@ -14,15 +14,16 @@ namespace Flarum\Api\Controller; use Flarum\Api\Event\WillGetData; use Flarum\Api\Event\WillSerializeData; use Flarum\Api\JsonApiResponse; -use Flarum\Http\Controller\ControllerInterface; use Illuminate\Contracts\Container\Container; use Illuminate\Contracts\Events\Dispatcher; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; use Tobscure\JsonApi\Document; use Tobscure\JsonApi\Parameters; use Tobscure\JsonApi\SerializerInterface; -abstract class AbstractSerializeController implements ControllerInterface +abstract class AbstractSerializeController implements RequestHandlerInterface { /** * The name of the serializer class to output results with. @@ -86,7 +87,7 @@ abstract class AbstractSerializeController implements ControllerInterface /** * {@inheritdoc} */ - public function handle(ServerRequestInterface $request) + public function handle(ServerRequestInterface $request): ResponseInterface { $document = new Document; diff --git a/src/Api/Controller/ForgotPasswordController.php b/src/Api/Controller/ForgotPasswordController.php index 341f16d34..ca2aa5b4e 100644 --- a/src/Api/Controller/ForgotPasswordController.php +++ b/src/Api/Controller/ForgotPasswordController.php @@ -11,14 +11,15 @@ namespace Flarum\Api\Controller; -use Flarum\Http\Controller\ControllerInterface; use Flarum\User\Command\RequestPasswordReset; use Flarum\User\UserRepository; use Illuminate\Contracts\Bus\Dispatcher; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; use Zend\Diactoros\Response\EmptyResponse; -class ForgotPasswordController implements ControllerInterface +class ForgotPasswordController implements RequestHandlerInterface { /** * @var \Flarum\User\UserRepository @@ -43,7 +44,7 @@ class ForgotPasswordController implements ControllerInterface /** * {@inheritdoc} */ - public function handle(ServerRequestInterface $request) + public function handle(ServerRequestInterface $request): ResponseInterface { $email = array_get($request->getParsedBody(), 'email'); diff --git a/src/Api/Controller/SendConfirmationEmailController.php b/src/Api/Controller/SendConfirmationEmailController.php index 2935f0067..54bde47db 100644 --- a/src/Api/Controller/SendConfirmationEmailController.php +++ b/src/Api/Controller/SendConfirmationEmailController.php @@ -11,7 +11,6 @@ namespace Flarum\Api\Controller; -use Flarum\Http\Controller\ControllerInterface; use Flarum\Http\UrlGenerator; use Flarum\Settings\SettingsRepositoryInterface; use Flarum\User\AssertPermissionTrait; @@ -19,11 +18,13 @@ use Flarum\User\EmailToken; use Flarum\User\Exception\PermissionDeniedException; use Illuminate\Contracts\Mail\Mailer; use Illuminate\Mail\Message; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; use Symfony\Component\Translation\TranslatorInterface; use Zend\Diactoros\Response\EmptyResponse; -class SendConfirmationEmailController implements ControllerInterface +class SendConfirmationEmailController implements RequestHandlerInterface { use AssertPermissionTrait; @@ -64,7 +65,7 @@ class SendConfirmationEmailController implements ControllerInterface /** * {@inheritdoc} */ - public function handle(ServerRequestInterface $request) + public function handle(ServerRequestInterface $request): ResponseInterface { $id = array_get($request->getQueryParams(), 'id'); $actor = $request->getAttribute('actor'); diff --git a/src/Api/Controller/SetPermissionController.php b/src/Api/Controller/SetPermissionController.php index 1171111b1..65ce73fc2 100644 --- a/src/Api/Controller/SetPermissionController.php +++ b/src/Api/Controller/SetPermissionController.php @@ -12,19 +12,20 @@ namespace Flarum\Api\Controller; use Flarum\Group\Permission; -use Flarum\Http\Controller\ControllerInterface; use Flarum\User\AssertPermissionTrait; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; use Zend\Diactoros\Response\EmptyResponse; -class SetPermissionController implements ControllerInterface +class SetPermissionController implements RequestHandlerInterface { use AssertPermissionTrait; /** * {@inheritdoc} */ - public function handle(ServerRequestInterface $request) + public function handle(ServerRequestInterface $request): ResponseInterface { $this->assertAdmin($request->getAttribute('actor')); diff --git a/src/Api/Controller/SetSettingsController.php b/src/Api/Controller/SetSettingsController.php index 19ddb21ae..f63d83cbd 100644 --- a/src/Api/Controller/SetSettingsController.php +++ b/src/Api/Controller/SetSettingsController.php @@ -11,16 +11,17 @@ namespace Flarum\Api\Controller; -use Flarum\Http\Controller\ControllerInterface; use Flarum\Settings\Event\Saved; use Flarum\Settings\Event\Serializing; use Flarum\Settings\SettingsRepositoryInterface; use Flarum\User\AssertPermissionTrait; use Illuminate\Contracts\Events\Dispatcher; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; use Zend\Diactoros\Response\EmptyResponse; -class SetSettingsController implements ControllerInterface +class SetSettingsController implements RequestHandlerInterface { use AssertPermissionTrait; @@ -46,7 +47,7 @@ class SetSettingsController implements ControllerInterface /** * {@inheritdoc} */ - public function handle(ServerRequestInterface $request) + public function handle(ServerRequestInterface $request): ResponseInterface { $this->assertAdmin($request->getAttribute('actor')); diff --git a/src/Api/Controller/TokenController.php b/src/Api/Controller/TokenController.php index e0f6f6464..268f4a598 100644 --- a/src/Api/Controller/TokenController.php +++ b/src/Api/Controller/TokenController.php @@ -12,15 +12,16 @@ namespace Flarum\Api\Controller; use Flarum\Http\AccessToken; -use Flarum\Http\Controller\ControllerInterface; use Flarum\User\Exception\PermissionDeniedException; use Flarum\User\UserRepository; use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher; use Illuminate\Contracts\Events\Dispatcher as EventDispatcher; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; use Zend\Diactoros\Response\JsonResponse; -class TokenController implements ControllerInterface +class TokenController implements RequestHandlerInterface { /** * @var \Flarum\User\UserRepository @@ -52,7 +53,7 @@ class TokenController implements ControllerInterface /** * {@inheritdoc} */ - public function handle(ServerRequestInterface $request) + public function handle(ServerRequestInterface $request): ResponseInterface { $body = $request->getParsedBody(); diff --git a/src/Api/Controller/UpdateExtensionController.php b/src/Api/Controller/UpdateExtensionController.php index 4e0aab79e..404f13e3f 100644 --- a/src/Api/Controller/UpdateExtensionController.php +++ b/src/Api/Controller/UpdateExtensionController.php @@ -12,12 +12,13 @@ namespace Flarum\Api\Controller; use Flarum\Extension\ExtensionManager; -use Flarum\Http\Controller\ControllerInterface; use Flarum\User\AssertPermissionTrait; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; use Zend\Diactoros\Response\EmptyResponse; -class UpdateExtensionController implements ControllerInterface +class UpdateExtensionController implements RequestHandlerInterface { use AssertPermissionTrait; @@ -37,7 +38,7 @@ class UpdateExtensionController implements ControllerInterface /** * {@inheritdoc} */ - public function handle(ServerRequestInterface $request) + public function handle(ServerRequestInterface $request): ResponseInterface { $this->assertAdmin($request->getAttribute('actor')); diff --git a/src/Forum/Controller/AbstractOAuth2Controller.php b/src/Forum/Controller/AbstractOAuth2Controller.php index ed0946dda..bd6522f64 100644 --- a/src/Forum/Controller/AbstractOAuth2Controller.php +++ b/src/Forum/Controller/AbstractOAuth2Controller.php @@ -12,12 +12,13 @@ namespace Flarum\Forum\Controller; use Flarum\Forum\AuthenticationResponseFactory; -use Flarum\Http\Controller\ControllerInterface; use League\OAuth2\Client\Provider\ResourceOwnerInterface; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\RequestHandlerInterface; use Zend\Diactoros\Response\RedirectResponse; -abstract class AbstractOAuth2Controller implements ControllerInterface +abstract class AbstractOAuth2Controller implements RequestHandlerInterface { /** * @var AuthenticationResponseFactory @@ -46,9 +47,9 @@ abstract class AbstractOAuth2Controller implements ControllerInterface /** * @param Request $request - * @return \Psr\Http\Message\ResponseInterface|RedirectResponse + * @return ResponseInterface */ - public function handle(Request $request) + public function handle(Request $request): ResponseInterface { $redirectUri = (string) $request->getAttribute('originalUri', $request->getUri())->withQuery(''); diff --git a/src/Forum/Controller/ConfirmEmailController.php b/src/Forum/Controller/ConfirmEmailController.php index 5889fdfb6..e6e094ef3 100644 --- a/src/Forum/Controller/ConfirmEmailController.php +++ b/src/Forum/Controller/ConfirmEmailController.php @@ -12,16 +12,17 @@ namespace Flarum\Forum\Controller; use Flarum\Foundation\Application; -use Flarum\Http\Controller\ControllerInterface; use Flarum\Http\SessionAuthenticator; use Flarum\User\Command\ConfirmEmail; use Flarum\User\Exception\InvalidConfirmationTokenException; use Illuminate\Contracts\Bus\Dispatcher; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\RequestHandlerInterface; use Zend\Diactoros\Response\HtmlResponse; use Zend\Diactoros\Response\RedirectResponse; -class ConfirmEmailController implements ControllerInterface +class ConfirmEmailController implements RequestHandlerInterface { /** * @var Dispatcher @@ -52,9 +53,9 @@ class ConfirmEmailController implements ControllerInterface /** * @param Request $request - * @return \Psr\Http\Message\ResponseInterface + * @return ResponseInterface */ - public function handle(Request $request) + public function handle(Request $request): ResponseInterface { try { $token = array_get($request->getQueryParams(), 'token'); diff --git a/src/Forum/Controller/LogInController.php b/src/Forum/Controller/LogInController.php index e425b06bd..cf62d81e9 100644 --- a/src/Forum/Controller/LogInController.php +++ b/src/Forum/Controller/LogInController.php @@ -14,14 +14,15 @@ namespace Flarum\Forum\Controller; use Flarum\Api\Client; use Flarum\Api\Controller\TokenController; use Flarum\Http\AccessToken; -use Flarum\Http\Controller\ControllerInterface; use Flarum\Http\Rememberer; use Flarum\Http\SessionAuthenticator; use Flarum\User\Event\LoggedIn; use Flarum\User\UserRepository; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\RequestHandlerInterface; -class LogInController implements ControllerInterface +class LogInController implements RequestHandlerInterface { /** * @var \Flarum\User\UserRepository @@ -60,7 +61,7 @@ class LogInController implements ControllerInterface /** * {@inheritdoc} */ - public function handle(Request $request) + public function handle(Request $request): ResponseInterface { $actor = $request->getAttribute('actor'); $body = $request->getParsedBody(); diff --git a/src/Forum/Controller/LogOutController.php b/src/Forum/Controller/LogOutController.php index 86bb45480..616598c6d 100644 --- a/src/Forum/Controller/LogOutController.php +++ b/src/Forum/Controller/LogOutController.php @@ -12,7 +12,6 @@ namespace Flarum\Forum\Controller; use Flarum\Foundation\Application; -use Flarum\Http\Controller\ControllerInterface; use Flarum\Http\Exception\TokenMismatchException; use Flarum\Http\Rememberer; use Flarum\Http\SessionAuthenticator; @@ -21,11 +20,13 @@ use Flarum\User\AssertPermissionTrait; use Flarum\User\Event\LoggedOut; use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\View\Factory; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\RequestHandlerInterface; use Zend\Diactoros\Response\HtmlResponse; use Zend\Diactoros\Response\RedirectResponse; -class LogOutController implements ControllerInterface +class LogOutController implements RequestHandlerInterface { use AssertPermissionTrait; @@ -85,10 +86,10 @@ class LogOutController implements ControllerInterface /** * @param Request $request - * @return \Psr\Http\Message\ResponseInterface + * @return ResponseInterface * @throws TokenMismatchException */ - public function handle(Request $request) + public function handle(Request $request): ResponseInterface { $session = $request->getAttribute('session'); $actor = $request->getAttribute('actor'); diff --git a/src/Forum/Controller/RegisterController.php b/src/Forum/Controller/RegisterController.php index 1c3c33646..d86e394c3 100644 --- a/src/Forum/Controller/RegisterController.php +++ b/src/Forum/Controller/RegisterController.php @@ -13,12 +13,13 @@ namespace Flarum\Forum\Controller; use Flarum\Api\Client; use Flarum\Api\Controller\CreateUserController; -use Flarum\Http\Controller\ControllerInterface; use Flarum\Http\Rememberer; use Flarum\Http\SessionAuthenticator; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\RequestHandlerInterface; -class RegisterController implements ControllerInterface +class RegisterController implements RequestHandlerInterface { /** * @var Client @@ -50,7 +51,7 @@ class RegisterController implements ControllerInterface /** * {@inheritdoc} */ - public function handle(Request $request) + public function handle(Request $request): ResponseInterface { $controller = CreateUserController::class; $actor = $request->getAttribute('actor'); diff --git a/src/Forum/Controller/SavePasswordController.php b/src/Forum/Controller/SavePasswordController.php index 8a49831d7..507fdb29d 100644 --- a/src/Forum/Controller/SavePasswordController.php +++ b/src/Forum/Controller/SavePasswordController.php @@ -12,7 +12,6 @@ namespace Flarum\Forum\Controller; use Flarum\Foundation\DispatchEventsTrait; -use Flarum\Http\Controller\ControllerInterface; use Flarum\Http\SessionAuthenticator; use Flarum\Http\UrlGenerator; use Flarum\User\PasswordToken; @@ -20,10 +19,12 @@ use Flarum\User\UserValidator; use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Validation\Factory; use Illuminate\Validation\ValidationException; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\RequestHandlerInterface; use Zend\Diactoros\Response\RedirectResponse; -class SavePasswordController implements ControllerInterface +class SavePasswordController implements RequestHandlerInterface { use DispatchEventsTrait; @@ -64,9 +65,9 @@ class SavePasswordController implements ControllerInterface /** * @param Request $request - * @return RedirectResponse + * @return ResponseInterface */ - public function handle(Request $request) + public function handle(Request $request): ResponseInterface { $input = $request->getParsedBody(); diff --git a/src/Http/Controller/AbstractHtmlController.php b/src/Http/Controller/AbstractHtmlController.php index 2f56ed7ef..03e8b3613 100644 --- a/src/Http/Controller/AbstractHtmlController.php +++ b/src/Http/Controller/AbstractHtmlController.php @@ -12,16 +12,18 @@ namespace Flarum\Http\Controller; use Illuminate\Contracts\Support\Renderable; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\RequestHandlerInterface; use Zend\Diactoros\Response\HtmlResponse; -abstract class AbstractHtmlController implements ControllerInterface +abstract class AbstractHtmlController implements RequestHandlerInterface { /** * @param Request $request * @return HtmlResponse */ - public function handle(Request $request) + public function handle(Request $request): ResponseInterface { $view = $this->render($request); diff --git a/src/Http/Controller/ControllerInterface.php b/src/Http/Controller/ControllerInterface.php deleted file mode 100644 index 4912311f0..000000000 --- a/src/Http/Controller/ControllerInterface.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Flarum\Http\Controller; - -use Psr\Http\Message\ServerRequestInterface; - -interface ControllerInterface -{ - /** - * @param ServerRequestInterface $request - * @return \Psr\Http\Message\ResponseInterface - */ - public function handle(ServerRequestInterface $request); -} diff --git a/src/Http/ControllerRouteHandler.php b/src/Http/ControllerRouteHandler.php index b65e106de..a37b776ed 100644 --- a/src/Http/ControllerRouteHandler.php +++ b/src/Http/ControllerRouteHandler.php @@ -11,11 +11,11 @@ namespace Flarum\Http; -use Flarum\Http\Controller\ControllerInterface; use Illuminate\Contracts\Container\Container; use InvalidArgumentException; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; class ControllerRouteHandler { @@ -55,15 +55,15 @@ class ControllerRouteHandler /** * @param string $class - * @return ControllerInterface + * @return RequestHandlerInterface */ protected function resolveController($class) { $controller = $this->container->make($class); - if (! ($controller instanceof ControllerInterface)) { + if (! ($controller instanceof RequestHandlerInterface)) { throw new InvalidArgumentException( - 'Controller must be an instance of '.ControllerInterface::class + 'Controller must be an instance of '.RequestHandlerInterface::class ); } diff --git a/src/Install/Controller/InstallController.php b/src/Install/Controller/InstallController.php index 5cee7d10f..95cbaa323 100644 --- a/src/Install/Controller/InstallController.php +++ b/src/Install/Controller/InstallController.php @@ -12,17 +12,18 @@ namespace Flarum\Install\Controller; use Exception; -use Flarum\Http\Controller\ControllerInterface; use Flarum\Http\SessionAuthenticator; use Flarum\Install\Console\DefaultsDataProvider; use Flarum\Install\Console\InstallCommand; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\RequestHandlerInterface; use Symfony\Component\Console\Input\StringInput; use Symfony\Component\Console\Output\StreamOutput; use Zend\Diactoros\Response; use Zend\Diactoros\Response\HtmlResponse; -class InstallController implements ControllerInterface +class InstallController implements RequestHandlerInterface { protected $command; @@ -44,9 +45,9 @@ class InstallController implements ControllerInterface /** * @param Request $request - * @return \Psr\Http\Message\ResponseInterface + * @return ResponseInterface */ - public function handle(Request $request) + public function handle(Request $request): ResponseInterface { $input = $request->getParsedBody(); diff --git a/src/Update/Controller/UpdateController.php b/src/Update/Controller/UpdateController.php index 390aff798..fc6c929ba 100644 --- a/src/Update/Controller/UpdateController.php +++ b/src/Update/Controller/UpdateController.php @@ -14,14 +14,15 @@ namespace Flarum\Update\Controller; use Exception; use Flarum\Database\Console\MigrateCommand; use Flarum\Foundation\Application; -use Flarum\Http\Controller\ControllerInterface; +use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Http\Server\RequestHandlerInterface; use Symfony\Component\Console\Input\StringInput; use Symfony\Component\Console\Output\StreamOutput; use Zend\Diactoros\Response; use Zend\Diactoros\Response\HtmlResponse; -class UpdateController implements ControllerInterface +class UpdateController implements RequestHandlerInterface { protected $command; @@ -42,9 +43,9 @@ class UpdateController implements ControllerInterface /** * @param Request $request - * @return \Psr\Http\Message\ResponseInterface + * @return ResponseInterface */ - public function handle(Request $request) + public function handle(Request $request): ResponseInterface { $input = $request->getParsedBody(); diff --git a/tests/Api/Controller/ApiControllerTestCase.php b/tests/Api/Controller/ApiControllerTestCase.php index fa8695fb2..7f807e182 100644 --- a/tests/Api/Controller/ApiControllerTestCase.php +++ b/tests/Api/Controller/ApiControllerTestCase.php @@ -11,16 +11,16 @@ namespace Flarum\Tests\Api\Controller; -use Flarum\Http\Controller\ControllerInterface; use Flarum\Tests\Test\TestCase; use Flarum\User\User; use Illuminate\Support\Arr; use Psr\Http\Message\ResponseInterface; +use Psr\Http\Server\RequestHandlerInterface; abstract class ApiControllerTestCase extends TestCase { /** - * @var ControllerInterface + * @var RequestHandlerInterface */ protected $controller; From f137eb358f01b102afe3401033370009f4a10806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20Klabbers?= Date: Wed, 30 May 2018 10:36:00 +0200 Subject: [PATCH 6/7] Update .travis.yml remove conditional which is unnecessary --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8bfa212b6..0f1f30b61 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,8 @@ matrix: - DB=mysql before_install: - - if [[ "$DB" == "mysql" || "$DB" == "mariadb" ]]; then mysql -e 'CREATE DATABASE flarum;'; fi + - mysql -e 'CREATE DATABASE flarum;' + before_script: - composer self-update - composer install From 3ec32f84307f0a91a5c5844ea0f06ba838916d6f Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Sat, 2 Jun 2018 15:04:19 +0200 Subject: [PATCH 7/7] Composer: Sort dependencies --- composer.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 9039b4d34..8671d10bd 100644 --- a/composer.json +++ b/composer.json @@ -21,9 +21,9 @@ }, "require": { "php": ">=7.1", + "components/font-awesome": "^5.0.6", "dflydev/fig-cookies": "^1.0.2", "doctrine/dbal": "^2.5", - "components/font-awesome": "^5.0.6", "franzl/whoops-middleware": "^0.4.0", "illuminate/bus": "5.5.*", "illuminate/cache": "5.5.*", @@ -49,12 +49,12 @@ "psr/http-message": "^1.0", "psr/http-server-handler": "^1.0", "psr/http-server-middleware": "^1.0", + "s9e/text-formatter": "^0.8.1", "symfony/config": "^3.3", "symfony/console": "^3.3", "symfony/http-foundation": "^3.3", "symfony/translation": "^3.3", "symfony/yaml": "^3.3", - "s9e/text-formatter": "^0.8.1", "tobscure/json-api": "^0.3.0", "zendframework/zend-diactoros": "^1.7", "zendframework/zend-stratigility": "^3.0" @@ -76,6 +76,9 @@ "Flarum\\Tests\\": "tests/" } }, + "config": { + "sort-packages": true + }, "extra": { "branch-alias": { "dev-master": "0.1.x-dev"