summaryrefslogtreecommitdiff
path: root/src/BasicStrategy.php
blob: 5043576f113a582e151c551cb817a7c085e80001 (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
27
28
29
30
<?php

declare(strict_types=1);

namespace Lightscale\Router;

use Lightscale\Router\Contracts\Strategy;
use Lightscale\Router\Exceptions\InvalidResponseException;
use Lightscale\Router\Exceptions\NotFoundException;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;

class BasicStrategy implements Strategy
{
    public function runRoute(RouteCall $call): ResponseInterface
    {
        $result = ($call->route->getHandler())($call);

        if ($result instanceof ResponseInterface) {
            return $result;
        }

        throw new InvalidResponseException();
    }

    public function notFound(RequestInterface $request): ResponseInterface
    {
        throw new NotFoundException();
    }
}