Completed
Push — master ( 72cf40...25f19f )
by Sullivan
02:36
created

Configuration::getConfigTreeBuilder()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 44
Code Lines 39

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 44
rs 8.8571
cc 1
eloc 39
nc 1
nop 0
1
<?php
2
3
namespace Nexy\PayboxDirect\Bridge\Symfony\DependencyInjection;
4
5
use Nexy\PayboxDirect\Enum\Currency;
6
use Nexy\PayboxDirect\Enum\Version;
7
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
8
use Symfony\Component\Config\Definition\ConfigurationInterface;
9
10
/**
11
 * @author Sullivan Senechal <[email protected]>
12
 */
13
final class Configuration implements ConfigurationInterface
14
{
15
    /**
16
     * {@inheritdoc}
17
     */
18
    public function getConfigTreeBuilder()
19
    {
20
        $treeBuilder = new TreeBuilder();
21
        $rootNode = $treeBuilder->root('nexy_paybox_direct');
22
23
        $rootNode
24
            ->children()
25
                ->scalarNode('client')->defaultNull()->end()
26
                ->arrayNode('options')
27
                    ->addDefaultsIfNotSet()
28
                    ->children()
29
                        ->integerNode('timeout')->end()
30
                        ->booleanNode('production')->end()
31
                    ->end()
32
                ->end()
33
                ->arrayNode('paybox')
34
                    ->isRequired()
35
                    ->addDefaultsIfNotSet()
36
                    ->children()
37
                        ->scalarNode('version')
38
                            ->isRequired()
39
                            ->cannotBeEmpty()
40
                            ->validate()
41
                                ->ifNotInArray(Version::getKeys('strtolower'))
42
                                ->thenInvalid('Invalid Paybox version')
43
                            ->end()
44
                        ->end()
45
                        ->scalarNode('site')->isRequired()->cannotBeEmpty()->end()
46
                        ->scalarNode('rank')->isRequired()->cannotBeEmpty()->end()
47
                        ->scalarNode('identifier')->isRequired()->cannotBeEmpty()->end()
48
                        ->scalarNode('key')->isRequired()->cannotBeEmpty()->end()
49
                        ->scalarNode('default_currency')
50
                            ->validate()
51
                                ->ifNotInArray(Currency::getKeys('strtolower'))
52
                                ->thenInvalid('Invalid Paybox version')
53
                            ->end()
54
                        ->end()
55
                    ->end()
56
                ->end()
57
            ->end()
58
        ;
59
60
        return $treeBuilder;
61
    }
62
}
63