Passed
Push — master ( 53f538...807973 )
by Oleg
02:07
created

Routes::getConfig()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 24
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 3.072

Importance

Changes 0
Metric Value
cc 3
eloc 17
nc 4
nop 0
dl 0
loc 24
ccs 12
cts 15
cp 0.8
crap 3.072
rs 9.7
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace SlayerBirden\DFCodeGeneration\Generator\Config\Parts\Update;
5
6
use Nette\PhpGenerator\PhpLiteral;
7
use SlayerBirden\DFCodeGeneration\Generator\Config\ConfigPartInterface;
8
use SlayerBirden\DFCodeGeneration\Generator\DataProvider\DataProviderInterface;
9
10
final class Routes implements ConfigPartInterface
11
{
12
    const PART_KEY = 'routes';
13
    /**
14
     * @var DataProviderInterface
15
     */
16
    private $dataProvider;
17
18 2
    public function __construct(DataProviderInterface $dataProvider)
19
    {
20 2
        $this->dataProvider = $dataProvider;
21 2
    }
22
23
    /**
24
     * @inheritdoc
25
     */
26 2
    public function getConfig(): array
27
    {
28 2
        $entity = $this->dataProvider->provide()['refName'];
29
        $middleware = [
30 2
            '\SlayerBirden\DataFlowServer\Authentication\Middleware\TokenMiddleware::class',
31 2
            $this->dataProvider->provide()['entityClassName'] . 'ResourceMiddleware',
32
        ];
33 2
        if ($this->dataProvider->provide()['has_owner']) {
34
            $middleware[] = new PhpLiteral(
35
                '\SlayerBirden\DataFlowServer\Domain\Middleware\ValidateOwnerMiddleware::class'
36
            );
37
        }
38 2
        $middleware[] = \Zend\Expressive\Helper\BodyParams\BodyParamsMiddleware::class;
39 2
        if ($this->dataProvider->provide()['has_owner']) {
40
            $middleware[] = new PhpLiteral('\SlayerBirden\DataFlowServer\Domain\Middleware\SetOwnerMiddleware::class');
41
        }
42 2
        $middleware[] = $this->getControllerFullName();
43 2
        $regexp = $this->dataProvider->provide()['idRegexp'];
44
        return [
45
            [
46 2
                'path' => sprintf('/%s/{id:\%s}', $entity, $regexp),
47 2
                'middleware' => $middleware,
48 2
                'name' => 'update_' . $entity,
49
                'allowed_methods' => ['PUT'],
50
            ],
51
        ];
52
    }
53
54
    /**
55
     * @inheritdoc
56
     */
57 2
    public function getCode(): string
58
    {
59 2
        return self::PART_KEY;
60
    }
61
62 2
    private function getControllerFullName(): string
63
    {
64 2
        return $this->dataProvider->provide()['controller_namespace'] .
65 2
            '\\' . 'Update' . $this->dataProvider->provide()['entityClassName'] . 'Action::class';
66
    }
67
}
68