Sf4ApiExtension::addRequestHandlerDefaultSites()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nc 1
nop 1
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: siim
5
 * Date: 25.02.19
6
 * Time: 9:45
7
 */
8
9
namespace Sf4\Api\DependencyInjection;
10
11
use Sf4\Api\DependencyInjection\Traits\Sf4ApiExtensionTrait;
12
use Sf4\Api\Request\DefaultRequest;
13
use Sf4\Api\Request\SiteRequest;
14
use Symfony\Component\DependencyInjection\ContainerBuilder;
15
use Symfony\Component\DependencyInjection\Extension\Extension;
16
17
class Sf4ApiExtension extends Extension
18
{
19
20
    use Sf4ApiExtensionTrait;
21
22
23
    /**
24
     * Loads a specific configuration.
25
     *
26
     * @param array $configs
27
     * @param ContainerBuilder $container
28
     * @throws \Exception
29
     */
30
    public function load(array $configs, ContainerBuilder $container): void
31
    {
32
        $this->loadServices($container, __DIR__);
33
34
        $configuration = new Configuration();
35
        $config = $this->processConfiguration($configuration, $configs);
36
37
        $this->addRequestHandlerDefaultSites($container);
38
        if (array_key_exists(Configuration::SITES, $config) && !empty($config[Configuration::SITES])) {
39
            $this->addRequestHandlerSites($container, $config[Configuration::SITES]);
40
        }
41
42
        $this->addRequestHandlerDefaultRoutes($container);
43
        if (array_key_exists(Configuration::ROUTES, $config) && !empty($config[Configuration::ROUTES])) {
44
            $this->addRequestHandlerRoutes($container, $config[Configuration::ROUTES]);
45
        }
46
47
        if (array_key_exists(Configuration::ENTITIES, $config) && !empty($config[Configuration::ENTITIES])) {
48
            $this->addRepositoryFactoryEntities($container, $config[Configuration::ENTITIES]);
49
        }
50
    }
51
52
    /**
53
     * @param ContainerBuilder $container
54
     */
55
    protected function addRequestHandlerDefaultSites(ContainerBuilder $container): void
56
    {
57
        $this->addRequestHandlerSites($container, [
58
            [
59
                Configuration::SITES_SITE => 'parent',
60
                Configuration::SITES_URL => null,
61
                Configuration::SITES_TOKEN => null
62
            ]
63
        ]);
64
    }
65
66
    /**
67
     * @param ContainerBuilder $container
68
     */
69
    protected function addRequestHandlerDefaultRoutes(ContainerBuilder $container): void
70
    {
71
        $this->addRequestHandlerRoutes($container, [
72
            [
73
                Configuration::ROUTES_ROUTE => DefaultRequest::ROUTE,
74
                Configuration::ROUTES_REQUEST_CLASS => DefaultRequest::class
75
            ],
76
            [
77
                Configuration::ROUTES_ROUTE => SiteRequest::ROUTE,
78
                Configuration::ROUTES_REQUEST_CLASS => SiteRequest::class
79
            ]
80
        ]);
81
    }
82
}
83