summaryrefslogtreecommitdiff
path: root/src/Contracts
diff options
context:
space:
mode:
Diffstat (limited to 'src/Contracts')
-rw-r--r--src/Contracts/Middleware.php16
-rw-r--r--src/Contracts/Strategy.php10
2 files changed, 26 insertions, 0 deletions
diff --git a/src/Contracts/Middleware.php b/src/Contracts/Middleware.php
new file mode 100644
index 0000000..96037c8
--- /dev/null
+++ b/src/Contracts/Middleware.php
@@ -0,0 +1,16 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Lightscale\Router\Contracts;
+
+use Psr\Http\Message\ResponseInterface;
+use Psr\Http\Message\ServerRequestInterface;
+
+interface Middleware
+{
+ public function handle(
+ ServerRequestInterface $request,
+ callable $next,
+ ): ResponseInterface;
+}
diff --git a/src/Contracts/Strategy.php b/src/Contracts/Strategy.php
index bb877c1..fa41819 100644
--- a/src/Contracts/Strategy.php
+++ b/src/Contracts/Strategy.php
@@ -10,6 +10,16 @@ use Psr\Http\Message\ResponseInterface;
interface Strategy
{
+ /**
+ * @param Middleware[] $middlewares
+ * @param callable(RequestInterface): ResponseInterface $handler
+ */
+ public function runMiddleware(
+ RequestInterface $request,
+ array $middlewares,
+ callable $handler,
+ ): ResponseInterface;
+
public function runRoute(RouteCall $call): ResponseInterface;
public function notFound(RequestInterface $request): ResponseInterface;