Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
24 / 24 |
|
100.00% |
3 / 3 |
CRAP | |
100.00% |
1 / 1 |
ZmsSlimRequest | |
100.00% |
24 / 24 |
|
100.00% |
3 / 3 |
5 | |
100.00% |
1 / 1 |
__invoke | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
2 | |||
getDecoratedRequest | |
100.00% |
14 / 14 |
|
100.00% |
1 / 1 |
1 | |||
addAttributes | |
100.00% |
6 / 6 |
|
100.00% |
1 / 1 |
2 |
1 | <?php |
2 | |
3 | /** |
4 | * @copyright BerlinOnline Stadtportal GmbH & Co. KG |
5 | **/ |
6 | |
7 | declare(strict_types=1); |
8 | |
9 | namespace BO\Slim\Middleware; |
10 | |
11 | use BO\Slim\Headers; |
12 | use Psr\Http\Message\ResponseInterface; |
13 | use Psr\Http\Message\ServerRequestInterface as Request; |
14 | use Psr\Http\Server\RequestHandlerInterface; |
15 | |
16 | class ZmsSlimRequest |
17 | { |
18 | /** |
19 | * @param Request $request |
20 | * @param RequestHandlerInterface $next |
21 | * @return ResponseInterface |
22 | */ |
23 | public function __invoke(Request $request, RequestHandlerInterface $next): ResponseInterface |
24 | { |
25 | $decoratedRequest = $request; |
26 | |
27 | if (!$request instanceof \BO\Slim\Request) { |
28 | $decoratedRequest = static::getDecoratedRequest($request); |
29 | } |
30 | |
31 | return $next->handle($decoratedRequest); |
32 | } |
33 | |
34 | public static function getDecoratedRequest(Request $request) |
35 | { |
36 | $zmsSlimRequest = new \BO\Slim\Request( |
37 | $request->getMethod(), |
38 | $request->getUri(), |
39 | new Headers($request->getHeaders()), |
40 | $request->getCookieParams(), |
41 | $request->getServerParams(), |
42 | $request->getBody(), |
43 | $request->getUploadedFiles() |
44 | ); |
45 | |
46 | $decoratedRequest = static::addAttributes( |
47 | $zmsSlimRequest->withParsedBody($request->getParsedBody()), |
48 | $request->getAttributes() |
49 | ); |
50 | return $decoratedRequest; |
51 | } |
52 | |
53 | protected static function addAttributes(\BO\Slim\Request $request, array $attributes): \BO\Slim\Request |
54 | { |
55 | if (count($attributes) === 0) { |
56 | return $request; |
57 | } |
58 | |
59 | return static::addAttributes( |
60 | $request->withAttribute(array_key_first($attributes), array_shift($attributes)), |
61 | $attributes |
62 | ); |
63 | } |
64 | } |