Completed
Branch middlewares (26113e)
by Marcel
02:58
created

Pipeliner::chain()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 3
cts 3
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace UMA\JsonRpc\Internal;
6
7
use Psr\Container\ContainerInterface;
8
use UMA\JsonRpc;
9
10
/**
11
 * Helper class to compose the pipeline of middlewares + procedure
12
 */
13
class Pipeliner
14
{
15
    /**
16
     * @param ContainerInterface $container
17
     * @param JsonRpc\Procedure  $procedure
18
     * @param string[]           $services
19
     *
20
     * @return callable
21
     */
22 9
    public static function build(ContainerInterface $container, JsonRpc\Procedure $procedure, array $services): callable
23
    {
24 9
        $pipe = $procedure;
25
26 9
        foreach ($services as $service => $_) {
27 2
            $pipe = self::chain($container->get($service), $pipe);
28
        }
29
30 8
        return $pipe;
31
    }
32
33 1
    private static function chain(JsonRpc\Middleware $outer, callable $inner): callable
34
    {
35
        return function (JsonRpc\Request $request) use ($outer, $inner): JsonRpc\Response {
36 1
            return $outer($request, $inner);
37 1
        };
38
    }
39
}
40