Passed
Push — master ( fbdcce...636973 )
by Pavel
12:08
created

Configuration   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Test Coverage

Coverage 91.8%

Importance

Changes 0
Metric Value
wmc 1
lcom 0
cbo 4
dl 0
loc 66
ccs 56
cts 61
cp 0.918
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A getConfigTreeBuilder() 0 62 1
1
<?php
2
3
namespace Bankiru\Api\DependencyInjection;
4
5
use Doctrine\Common\Cache\Cache;
6
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
7
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
8
use Symfony\Component\Config\Definition\ConfigurationInterface;
9
10
class Configuration implements ConfigurationInterface
11
{
12
    /** {@inheritdoc} */
13 6
    public function getConfigTreeBuilder()
14
    {
15 6
        $builder = new TreeBuilder();
16 6
        $root    = $builder->root('api_client');
17
18 6
        $logger = $root->children()->arrayNode('logger');
19 6
        $logger->canBeEnabled();
20 6
        $logger->addDefaultsIfNotSet();
21 6
        $logger->beforeNormalization()->ifString()->then(
22
            function ($v) {
23
                return ['service' => $v, 'enabled' => true];
24
            }
25 6
        );
26 6
        $logger->children()->booleanNode('debug_body')->defaultFalse();
27 6
        $logger->children()->scalarNode('service')->defaultValue('logger');
28
29 6
        $root->children()->booleanNode('profiling')->defaultValue('%kernel.debug%');
30 1
31 6
        $metadataCache = $root->children()->arrayNode('metadata_cache');
32 7
        $metadataCache->canBeEnabled();
33 7
        $metadataCache->children()->scalarNode('service')->info(
34
            Cache::class . ' Implementation service id. Required if enabled'
35 6
        )->defaultNull();
36 7
        $metadataCache->beforeNormalization()->ifString()->then(
37 1
            function ($v) {
38 1
                return ['service' => $v, 'enabled' => true];
39 1
            }
40 7
        );
41 1
42 7
        $cache = $root->children()->arrayNode('entity_cache');
43 7
        $cache->canBeEnabled();
44 7
        $cache->children()->scalarNode('service')->info('PSR-6 Cache service. Required if enabled');
45 7
        $cache->children()->scalarNode('logger')->defaultNull()->info('PSR-3 Log service for cache');
46 7
        $cache->beforeNormalization()->ifString()->then(
47 1
            function ($v) {
48 2
                return ['service' => $v, 'enabled' => true];
49 1
            }
50 7
        );
51 7
        $configuration = $cache->children()->arrayNode('configuration');
52 7
        $configuration->useAttributeAsKey('class');
53 1
        /** @var ArrayNodeDefinition $confProto */
54 7
        $confProto = $configuration->prototype('array');
55 7
        $confProto->children()->scalarNode('ttl')->isRequired();
56 7
        $confProto->beforeNormalization()
57 7
                  ->ifTrue(
58 1
                      function ($v) {
59 2
                          return is_int($v);
60 1
                      }
61 7
                  )
62 7
                  ->then(
63 2
                      function ($v) {
64 2
                          return ['ttl' => $v];
65 1
                      }
66 7
                  );
67 7
        $confProto->children()->variableNode('extra')
68 7
                  ->info('Extra data for entity cache configuration')
69 7
                  ->defaultValue([]);
70 7
        $confProto->ignoreExtraKeys(false);
71 7
        $confProto->canBeEnabled();
72 1
73 7
        return $builder;
74 1
    }
75
}
76