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    /**
13     *
14     */
15    public function __invoke(
16        ServerRequestInterface $request,
17        ?RequestHandlerInterface $next
18    ) {
19        if (null !== $next) {
20            $response = $next->handle(self::withValidator($request));
21        } else {
22            $response = (new ResponseFactory())->createResponse();
23        }
24
25        return $response;
26    }
27
28    public static function withValidator(ServerRequestInterface $request)
29    {
30        if ("GET" == $request->getMethod()) {
31            $validator = new \BO\Mellon\Validator($request->getQueryParams());
32        } else {
33            $queryParams = $request->getQueryParams();
34            $parameters = $request->getParsedBody();
35            $parameters = is_array($parameters) ? $parameters : [];
36            $parameters = array_merge($queryParams, $parameters);
37            $validator = new \BO\Mellon\Validator($parameters);
38            $body = (string)$request->getBody();
39            $validator->setInput($body);
40        }
41        return $request->withAttribute('validator', $validator);
42    }
43}