summaryrefslogtreecommitdiff
path: root/src/Contracts/Strategy.php
blob: fa41819edfc31cfb62b5494459bfc45372fe058f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

declare(strict_types=1);

namespace Lightscale\Router\Contracts;

use Lightscale\Router\RouteCall;
use Psr\Http\Message\RequestInterface;
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;
}