Routes   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Test Coverage

Coverage 87.5%

Importance

Changes 0
Metric Value
eloc 25
dl 0
loc 57
ccs 21
cts 24
cp 0.875
rs 10
c 0
b 0
f 0
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A getControllerFullName() 0 4 1
A getCode() 0 3 1
A getConfig() 0 25 3
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
        $middleware[] = $this->dataProvider->provide()['input_filter_middleware_name'];
40 2
        if ($this->dataProvider->provide()['has_owner']) {
41
            $middleware[] = new PhpLiteral('\SlayerBirden\DataFlowServer\Domain\Middleware\SetOwnerMiddleware::class');
42
        }
43 2
        $middleware[] = $this->getControllerFullName();
44 2
        $regexp = $this->dataProvider->provide()['idRegexp'];
45
        return [
46
            [
47 2
                'path' => sprintf('/%s/{id:\%s}', $entity, $regexp),
48 2
                'middleware' => $middleware,
49 2
                'name' => 'update_' . $entity,
50
                'allowed_methods' => ['PUT'],
51
            ],
52
        ];
53
    }
54
55
    /**
56
     * @inheritdoc
57
     */
58 2
    public function getCode(): string
59
    {
60 2
        return self::PART_KEY;
61
    }
62
63 2
    private function getControllerFullName(): string
64
    {
65 2
        return $this->dataProvider->provide()['controller_namespace'] .
66 2
            '\\' . 'Update' . $this->dataProvider->provide()['entityClassName'] . 'Action::class';
67
    }
68
}
69