Test Failed
Pull Request — master (#11)
by Pavel
11:44
created

BankiruJsonRpcServerExtension::load()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 24
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 24
rs 8.9713
c 0
b 0
f 0
cc 2
eloc 15
nc 2
nop 2
1
<?php
2
3
namespace Bankiru\Api\JsonRpc\DependencyInjection;
4
5
use Bankiru\Api\JsonRpc\Adapters\JMS\Compiler\JmsDriverPass;
6
use Bankiru\Api\JsonRpc\Adapters\JMS\Compiler\RelationHandlerHelper;
7
use Bankiru\Api\Rpc\RpcEvents;
8
use JMS\SerializerBundle\JMSSerializerBundle;
9
use Symfony\Bundle\SecurityBundle\SecurityBundle;
10
use Symfony\Component\Config\FileLocator;
11
use Symfony\Component\DependencyInjection\ContainerBuilder;
12
use Symfony\Component\DependencyInjection\Extension\Extension;
13
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
14
15
final class BankiruJsonRpcServerExtension extends Extension
16
{
17
    /** {@inheritdoc} */
18
    public function load(array $configs, ContainerBuilder $container)
19
    {
20
        $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
21
        $loader->load('jsonrpc.yml');
22
23
        $config = $this->processConfiguration(new Configuration(), $configs);
24
25
        $this->configureSecurity($container, $config);
26
        $this->configureBuiltinAdapter($container, $config);
27
        $this->configureJmsAdapter($container, $config);
28
29
        if (!empty($config['view_listener'])) {
30
            $container->getDefinition($config['view_listener'])
31
                      ->setPublic(true)
32
                      ->addTag(
33
                          'kernel.event_listener',
34
                          [
35
                              'event'    => RpcEvents::VIEW,
36
                              'method'   => 'onPlainResponse',
37
                              'priority' => -254,
38
                          ]
39
                      );
40
        }
41
    }
42
43
    public function getAlias()
44
    {
45
        return 'jsonrpc_server';
46
    }
47
48
    /**
49
     * @param ContainerBuilder $container
50
     */
51
    private function configureBuiltinAdapter(ContainerBuilder $container, array $config)
0 ignored issues
show
Unused Code introduced by
The parameter $config is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
52
    {
53
        $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config/adapters'));
54
55
        $loader->load('builtin.yml');
56
    }
57
58
    /**
59
     * @param ContainerBuilder $container
60
     */
61
    private function configureJmsAdapter(ContainerBuilder $container, array $config)
62
    {
63
        if (!in_array(JMSSerializerBundle::class, $container->getParameter('kernel.bundles'), true)) {
64
            return;
65
        }
66
67
        $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config/adapters'));
68
        $loader->load('jms.yml');
69
70
        foreach ($config['adapters']['jms']['relation_handlers'] as $handler => $emid) {
71
            RelationHandlerHelper::ConfigureRelationHandler($container, $handler, $emid);
72
        }
73
    }
74
75
    /**
76
     * @param ContainerBuilder $container
77
     */
78
    private function configureSecurity(ContainerBuilder $container, array $config)
0 ignored issues
show
Unused Code introduced by
The parameter $config is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
79
    {
80
        if (in_array(SecurityBundle::class, $container->getParameter('kernel.bundles'), true)) {
81
            $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
82
            $loader->load('security.yml');
83
        }
84
    }
85
}
86