Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
92.86% covered (success)
92.86%
13 / 14
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
Validator
92.86% covered (success)
92.86%
13 / 14
50.00% covered (danger)
50.00%
1 / 2
5.01
0.00% covered (danger)
0.00%
0 / 1
 __invoke
75.00% covered (warning)
75.00%
3 / 4
0.00% covered (danger)
0.00%
0 / 1
2.06
 withValidator
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3namespace BO\Slim\Middleware;
4
5use Psr\Http\Message\ServerRequestInterface;
6use Psr\Http\Message\ResponseInterface;
7use Psr\Http\Server\RequestHandlerInterface;
8use BO\Slim\Factory\ResponseFactory;
9
10class Validator
11{
12    public function __invoke(
13        ServerRequestInterface $request,
14        ?RequestHandlerInterface $next
15    ) {
16        if (null !== $next) {
17            $response = $next->handle(self::withValidator($request));
18        } else {
19            $response = (new ResponseFactory())->createResponse();
20        }
21
22        return $response;
23    }
24
25    public static function withValidator(ServerRequestInterface $request): ServerRequestInterface
26    {
27        if ("GET" == $request->getMethod()) {
28            $validator = new \BO\Mellon\Validator($request->getQueryParams());
29        } else {
30            $queryParams = $request->getQueryParams();
31            $parameters = $request->getParsedBody();
32            $parameters = is_array($parameters) ? $parameters : [];
33            $parameters = array_merge($queryParams, $parameters);
34            $validator = new \BO\Mellon\Validator($parameters);
35            $body = (string)$request->getBody();
36            $validator->setInput($body);
37        }
38        return $request->withAttribute('validator', $validator);
39    }
40}