Completed
Pull Request — master (#15)
by Michal
28:17
created

Configuration::addWrapResponseDataNode()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 7
ccs 6
cts 6
cp 1
rs 9.4285
cc 1
eloc 5
nc 1
nop 1
crap 1
1
<?php
2
3
namespace MediaMonks\RestApiBundle\DependencyInjection;
4
5
use MediaMonks\RestApiBundle\Request\Format;
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
final class Configuration implements ConfigurationInterface
11
{
12
    /**
13
     * Generates the configuration tree.
14
     *
15
     * @return TreeBuilder
16
     */
17 3
    public function getConfigTreeBuilder()
18
    {
19 3
        $treeBuilder = new TreeBuilder();
20 3
        $rootNode = $treeBuilder->root('mediamonks_rest_api');
21
22 3
        $this->addDebugNode($rootNode);
23 3
        $this->addRequestMatcherNode($rootNode);
24 3
        $this->addSerializer($rootNode);
25 3
        $this->addPostMessageOriginNode($rootNode);
26 3
        $this->addWrapResponseDataNode($rootNode);
27
28 3
        return $treeBuilder;
29
    }
30
31
    /**
32
     * @param ArrayNodeDefinition $node
33
     */
34 3
    private function addDebugNode(ArrayNodeDefinition $node)
35
    {
36 3
        $node->children()
37 3
            ->scalarNode('debug')
38 3
            ->defaultNull()
39 3
            ->end();
40 3
    }
41
42
    /**
43
     * @param ArrayNodeDefinition $node
44
     */
45 3
    private function addRequestMatcherNode(ArrayNodeDefinition $node)
46
    {
47 3
        $node->children()
48 3
            ->arrayNode('request_matcher')
49 3
                ->addDefaultsIfNotSet()
50 3
                    ->children()
51 3
                        ->arrayNode('whitelist')
52 3
                            ->defaultValue(['~^/api/$~', '~^/api~'])
53 3
                            ->prototype('scalar')
54 3
                            ->end()
55 3
                        ->end()
56 3
                        ->arrayNode('blacklist')
57 3
                            ->defaultValue(['~^/api/doc~'])
58 3
                            ->prototype('scalar')
59 3
                        ->end()
60 3
                    ->end()
61 3
                ->end()
62 3
            ->end();
63 3
    }
64
65
    /**
66
     * @param ArrayNodeDefinition $node
67
     */
68 3
    private function addSerializer(ArrayNodeDefinition $node)
69
    {
70 3
        $node->children()
71 3
            ->scalarNode('serializer')
72 3
            ->defaultValue('json')
73 3
            ->end();
74 3
    }
75
76
    /**
77
     * @param ArrayNodeDefinition $node
78
     */
79 3
    private function addPostMessageOriginNode(ArrayNodeDefinition $node)
80
    {
81 3
        $node->children()
82 3
            ->scalarNode('post_message_origin')
83 3
            ->defaultNull()
84 3
            ->end();
85 3
    }
86
87 3
    private function addWrapResponseDataNode(ArrayNodeDefinition $node)
88
    {
89 3
        $node->children()
90 3
            ->booleanNode('wrap_response_data')
91 3
            ->defaultTrue()
92 3
            ->end();
93 3
    }
94
}
95