1 | <?php |
||
10 | class Configuration implements ConfigurationInterface |
||
11 | { |
||
12 | /** |
||
13 | * {@inheritdoc} |
||
14 | * |
||
15 | * @throws \RuntimeException |
||
16 | * @throws \InvalidArgumentException |
||
17 | */ |
||
18 | 20 | public function getConfigTreeBuilder(): TreeBuilder |
|
29 | |||
30 | /** |
||
31 | * @param ArrayNodeDefinition $rootNode |
||
32 | * |
||
33 | * @throws \InvalidArgumentException |
||
34 | * @throws \RuntimeException |
||
35 | */ |
||
36 | 20 | protected function addGetMethodOverride(ArrayNodeDefinition $rootNode): void |
|
91 | |||
92 | /** |
||
93 | * @param ArrayNodeDefinition $rootNode |
||
94 | */ |
||
95 | 20 | protected function addResponseSchemaValidation(ArrayNodeDefinition $rootNode): void |
|
114 | |||
115 | /** |
||
116 | * @param ArrayNodeDefinition $rootNode |
||
117 | * |
||
118 | * @throws \InvalidArgumentException |
||
119 | * @throws \RuntimeException |
||
120 | */ |
||
121 | 20 | protected function addApiVersionSupport(ArrayNodeDefinition $rootNode): void |
|
122 | { |
||
123 | $versionNormalizer = static function ($version): string { |
||
124 | 4 | if (\is_string($version)) { |
|
125 | return $version; |
||
126 | } |
||
127 | |||
128 | 4 | if (!is_numeric($version)) { |
|
129 | throw new \InvalidArgumentException(sprintf('"%s" is not numeric', $version)); |
||
130 | } |
||
131 | |||
132 | 4 | return number_format($version, 1, '.', ''); |
|
133 | 20 | }; |
|
134 | |||
135 | $rootNode |
||
136 | 20 | ->children() |
|
137 | 20 | ->arrayNode('api_versioning') |
|
138 | 20 | ->addDefaultsIfNotSet() |
|
139 | 20 | ->canBeEnabled() |
|
140 | 20 | ->children() |
|
141 | 20 | ->booleanNode('versioned_view_listener')->defaultFalse()->end() |
|
142 | 20 | ->arrayNode('features') |
|
143 | 20 | ->useAttributeAsKey('name') |
|
144 | 20 | ->prototype('array') |
|
145 | 20 | ->children() |
|
146 | 20 | ->scalarNode('since') |
|
147 | 20 | ->defaultNull() |
|
148 | 20 | ->beforeNormalization() |
|
149 | 20 | ->always($versionNormalizer) |
|
150 | 20 | ->end() |
|
151 | 20 | ->end() |
|
152 | 20 | ->scalarNode('until') |
|
153 | 20 | ->defaultNull() |
|
154 | 20 | ->beforeNormalization() |
|
155 | 20 | ->always($versionNormalizer) |
|
156 | 20 | ->end() |
|
157 | 20 | ->end() |
|
158 | 20 | ->end() |
|
159 | 20 | ->beforeNormalization() |
|
160 | 20 | ->always(function ($prototypeValue): array { |
|
161 | 4 | if (empty($prototypeValue)) { |
|
162 | throw new \InvalidArgumentException('No version constraints provided'); |
||
163 | } |
||
164 | |||
165 | 4 | return $prototypeValue; |
|
166 | 20 | }) |
|
167 | 20 | ->end() |
|
168 | 20 | ->end() |
|
169 | 20 | ->end() |
|
170 | 20 | ->end() |
|
171 | 20 | ->end() |
|
172 | 20 | ->end() |
|
173 | 20 | ->end(); |
|
174 | 20 | } |
|
175 | |||
176 | /** |
||
177 | * @return string[] |
||
178 | */ |
||
179 | 20 | protected function getOverridableHttpMethods(): array |
|
193 | } |
||
194 |