diff --git a/src/Http/AbstractServer.php b/src/Http/AbstractServer.php index 58cc9e8c2..34b77a8ec 100644 --- a/src/Http/AbstractServer.php +++ b/src/Http/AbstractServer.php @@ -15,6 +15,8 @@ use Flarum\Core\EmailToken; use Flarum\Core\PasswordToken; use Flarum\Foundation\AbstractServer as BaseAbstractServer; use Flarum\Foundation\Application; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; use Zend\Diactoros\Server; use Zend\Stratigility\MiddlewareInterface; @@ -36,6 +38,23 @@ abstract class AbstractServer extends BaseAbstractServer $server->listen(); } + /** + * Use as PSR-7 middleware + * + * @param $request + * @param $response + * @param null $out + * @return mixed + */ + public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $out = null) + { + $this->collectGarbage($this->app); + + $middleware = $this->getMiddleware($this->app); + + return $middleware($request, $response, $out); + } + /** * @param Application $app * @return MiddlewareInterface