Routes::getControllerFullName()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 1
rs 10
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
        $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