diff options
| -rw-r--r-- | src/BasicStrategy.php | 26 | ||||
| -rw-r--r-- | src/Concerns/Strategy/ParsesStringParameters.php | 21 | ||||
| -rw-r--r-- | src/Concerns/Strategy/RunsMiddleware.php (renamed from src/AbstractStrategy.php) | 17 | ||||
| -rw-r--r-- | src/Concerns/Strategy/RunsRoute.php | 23 | ||||
| -rw-r--r-- | src/Concerns/Strategy/ThrowsNotFoundException.php | 17 |
5 files changed, 69 insertions, 35 deletions
diff --git a/src/BasicStrategy.php b/src/BasicStrategy.php index d2ee91a..09d8db0 100644 --- a/src/BasicStrategy.php +++ b/src/BasicStrategy.php @@ -4,26 +4,12 @@ declare(strict_types=1); namespace Lightscale\Router; -use Lightscale\Router\Exceptions\InvalidResponseException; -use Lightscale\Router\Exceptions\NotFoundException; -use Psr\Http\Message\RequestInterface; -use Psr\Http\Message\ResponseInterface; +use Lightscale\Router\Contracts\Strategy; -class BasicStrategy extends AbstractStrategy +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(); - } + use Concerns\Strategy\RunsRoute; + use Concerns\Strategy\RunsMiddleware; + use Concerns\Strategy\ThrowsNotFoundException; + use Concerns\Strategy\ParsesStringParameters; } diff --git a/src/Concerns/Strategy/ParsesStringParameters.php b/src/Concerns/Strategy/ParsesStringParameters.php new file mode 100644 index 0000000..6dbc628 --- /dev/null +++ b/src/Concerns/Strategy/ParsesStringParameters.php @@ -0,0 +1,21 @@ +<?php + +declare(strict_types=1); + +namespace Lightscale\Router\Concerns\Strategy; + +use InvalidArgumentException; + +trait ParsesStringParameters +{ + public function parseParameters(array $parameters): array + { + foreach ($parameters as $key => $value) { + if (!is_string($value)) { + throw new InvalidArgumentException("Parameter {$key} is not a string."); + } + } + + return $parameters; + } +} diff --git a/src/AbstractStrategy.php b/src/Concerns/Strategy/RunsMiddleware.php index a68f5c1..4816a04 100644 --- a/src/AbstractStrategy.php +++ b/src/Concerns/Strategy/RunsMiddleware.php @@ -2,16 +2,14 @@ declare(strict_types=1); -namespace Lightscale\Router; +namespace Lightscale\Router\Concerns\Strategy; -use InvalidArgumentException; use Lightscale\Router\Contracts\Middleware; -use Lightscale\Router\Contracts\Strategy; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; -abstract class AbstractStrategy implements Strategy +trait RunsMiddleware { /** * @param Middleware[] $middlewares @@ -30,15 +28,4 @@ abstract class AbstractStrategy implements Strategy return $handler($request); } - - public function parseParameters(array $parameters): array - { - foreach ($parameters as $key => $value) { - if (!is_string($value)) { - throw new InvalidArgumentException("Parameter {$key} is not a string."); - } - } - - return $parameters; - } } diff --git a/src/Concerns/Strategy/RunsRoute.php b/src/Concerns/Strategy/RunsRoute.php new file mode 100644 index 0000000..849ae80 --- /dev/null +++ b/src/Concerns/Strategy/RunsRoute.php @@ -0,0 +1,23 @@ +<?php + +declare(strict_types=1); + +namespace Lightscale\Router\Concerns\Strategy; + +use Lightscale\Router\Exceptions\InvalidResponseException; +use Lightscale\Router\RouteCall; +use Psr\Http\Message\ResponseInterface; + +trait RunsRoute +{ + public function runRoute(RouteCall $call): ResponseInterface + { + $result = ($call->route->getHandler())($call); + + if ($result instanceof ResponseInterface) { + return $result; + } + + throw new InvalidResponseException(); + } +} diff --git a/src/Concerns/Strategy/ThrowsNotFoundException.php b/src/Concerns/Strategy/ThrowsNotFoundException.php new file mode 100644 index 0000000..996bdb5 --- /dev/null +++ b/src/Concerns/Strategy/ThrowsNotFoundException.php @@ -0,0 +1,17 @@ +<?php + +declare(strict_types=1); + +namespace Lightscale\Router\Concerns\Strategy; + +use Lightscale\Router\Exceptions\NotFoundException; +use Psr\Http\Message\RequestInterface; +use Psr\Http\Message\ResponseInterface; + +trait ThrowsNotFoundException +{ + public function notFound(RequestInterface $_): ResponseInterface + { + throw new NotFoundException(); + } +} |
