Completed
Push — master ( df04fe...ab0d6f )
by MediaMonks
54:23
created

Configuration::addResponseModel()   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 Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
6
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
7
use Symfony\Component\Config\Definition\ConfigurationInterface;
8
9
final class Configuration implements ConfigurationInterface
10
{
11
    /**
12
     * Generates the configuration tree.
13
     *
14
     * @return TreeBuilder
15
     */
16 3
    public function getConfigTreeBuilder()
17
    {
18 3
        $treeBuilder = new TreeBuilder();
19 3
        $rootNode = $treeBuilder->root('mediamonks_rest_api');
20
21 3
        $this->addDebugNode($rootNode);
22 3
        $this->addRequestMatcherNode($rootNode);
23 3
        $this->addSerializer($rootNode);
24 3
        $this->addPostMessageOriginNode($rootNode);
25 3
        $this->addResponseModel($rootNode);
26
27 3
        return $treeBuilder;
28
    }
29
30
    /**
31
     * @param ArrayNodeDefinition $node
32
     */
33 3
    private function addDebugNode(ArrayNodeDefinition $node)
34
    {
35 3
        $node->children()
36 3
            ->scalarNode('debug')
37 3
            ->defaultNull()
38 3
            ->end();
39 3
    }
40
41
    /**
42
     * @param ArrayNodeDefinition $node
43
     */
44 3
    private function addRequestMatcherNode(ArrayNodeDefinition $node)
45
    {
46 3
        $node->children()
47 3
            ->arrayNode('request_matcher')
48 3
                ->addDefaultsIfNotSet()
49 3
                    ->children()
50 3
                        ->scalarNode('path')
51 3
                        ->end()
52 3
                        ->arrayNode('whitelist')
53 3
                            ->defaultValue(['~^/api$~', '~^/api/~'])
54 3
                            ->prototype('scalar')
55 3
                            ->end()
56 3
                        ->end()
57 3
                        ->arrayNode('blacklist')
58 3
                            ->defaultValue(['~^/api/doc~'])
59 3
                            ->prototype('scalar')
60 3
                        ->end()
61 3
                    ->end()
62 3
                ->end()
63 3
            ->end();
64 3
    }
65
66
    /**
67
     * @param ArrayNodeDefinition $node
68
     */
69 3
    private function addSerializer(ArrayNodeDefinition $node)
70
    {
71 3
        $node->children()
72 3
            ->scalarNode('serializer')
73 3
            ->defaultValue('json')
74 3
            ->end();
75 3
    }
76
77
    /**
78
     * @param ArrayNodeDefinition $node
79
     */
80 3
    private function addPostMessageOriginNode(ArrayNodeDefinition $node)
81
    {
82 3
        $node->children()
83 3
            ->scalarNode('post_message_origin')
84 3
            ->defaultNull()
85 3
            ->end();
86 3
    }
87
88
    /**
89
     * @param ArrayNodeDefinition $node
90
     */
91 3
    private function addResponseModel(ArrayNodeDefinition $node)
92
    {
93 3
        $node->children()
94 3
            ->scalarNode('response_model')
95 3
            ->defaultNull()
96 3
            ->end();
97 3
    }
98
}
99