@@ -57,6 +57,10 @@ public function load(array $configs, ContainerBuilder $container)
5757 $ this ->loadProxyClient ($ container , $ loader , $ config ['proxy_client ' ]);
5858 }
5959
60+ if (isset ($ config ['test ' ])) {
61+ $ this ->loadTest ($ container , $ loader , $ config ['test ' ]);
62+ }
63+
6064 if ($ config ['cache_manager ' ]['enabled ' ]) {
6165 $ loader ->load ('cache_manager.xml ' );
6266 }
@@ -196,34 +200,33 @@ private function createRequestMatcher(ContainerBuilder $container, $path = null,
196200
197201 private function loadProxyClient (ContainerBuilder $ container , XmlFileLoader $ loader , array $ config )
198202 {
199- $ default = empty ($ config ['default ' ]) ? false : $ config ['default ' ];
200203 if (isset ($ config ['varnish ' ])) {
201204 $ this ->loadVarnish ($ container , $ loader , $ config ['varnish ' ]);
202- if (!$ default ) {
203- $ default = 'varnish ' ;
204- }
205205 }
206206 if (isset ($ config ['nginx ' ])) {
207207 $ this ->loadNginx ($ container , $ loader , $ config ['nginx ' ]);
208- if (!$ default ) {
209- $ default = 'nginx ' ;
210- }
211208 }
212209
213- $ container ->setAlias ($ this ->getAlias () . '.default_proxy_client ' , $ this ->getAlias () . '.proxy_client. ' . $ default );
210+ $ container ->setAlias (
211+ $ this ->getAlias () . '.default_proxy_client ' ,
212+ $ this ->getAlias () . '.proxy_client. ' . $ this ->getDefault ($ config )
213+ );
214214 }
215215
216216 private function loadVarnish (ContainerBuilder $ container , XmlFileLoader $ loader , array $ config )
217217 {
218218 $ loader ->load ('varnish.xml ' );
219219 foreach ($ config ['servers ' ] as $ url ) {
220- $ this ->validateUrl ($ url , 'Not a valid varnish server address: "%s" ' );
220+ $ this ->validateUrl ($ url , 'Not a valid Varnish server address: "%s" ' );
221221 }
222222 if (!empty ($ config ['base_url ' ])) {
223- $ this ->validateUrl ($ config ['base_url ' ], 'Not a valid base path: "%s" ' );
223+ $ baseUrl = $ this ->prefixSchema ($ config ['base_url ' ], 'Not a valid base path: "%s" ' );
224+ $ this ->validateUrl ($ baseUrl , 'Not a valid base path: "%s" ' );
225+ } else {
226+ $ baseUrl = null ;
224227 }
225228 $ container ->setParameter ($ this ->getAlias () . '.proxy_client.varnish.servers ' , $ config ['servers ' ]);
226- $ container ->setParameter ($ this ->getAlias () . '.proxy_client.varnish.base_url ' , $ config [ ' base_url ' ] );
229+ $ container ->setParameter ($ this ->getAlias () . '.proxy_client.varnish.base_url ' , $ baseUrl );
227230 if ($ config ['guzzle_client ' ]) {
228231 $ container ->getDefinition ($ this ->getAlias () . '.proxy_client.varnish ' )
229232 ->addArgument (
@@ -237,16 +240,85 @@ private function loadNginx(ContainerBuilder $container, XmlFileLoader $loader, a
237240 {
238241 $ loader ->load ('nginx.xml ' );
239242 foreach ($ config ['servers ' ] as $ url ) {
240- $ this ->validateUrl ($ url , 'Not a valid nginx server address: "%s" ' );
243+ $ this ->validateUrl ($ url , 'Not a valid Nginx server address: "%s" ' );
241244 }
242245 if (!empty ($ config ['base_url ' ])) {
243- $ this ->validateUrl ($ config ['base_url ' ], 'Not a valid base path: "%s" ' );
246+ $ baseUrl = $ this ->prefixSchema ($ config ['base_url ' ], 'Not a valid base path: "%s" ' );
247+ } else {
248+ $ baseUrl = null ;
244249 }
245250 $ container ->setParameter ($ this ->getAlias () . '.proxy_client.nginx.servers ' , $ config ['servers ' ]);
246- $ container ->setParameter ($ this ->getAlias () . '.proxy_client.nginx.base_url ' , $ config [ ' base_url ' ] );
251+ $ container ->setParameter ($ this ->getAlias () . '.proxy_client.nginx.base_url ' , $ baseUrl );
247252 $ container ->setParameter ($ this ->getAlias () . '.proxy_client.nginx.purge_location ' , $ config ['purge_location ' ]);
248253 }
249254
255+ private function loadTest (ContainerBuilder $ container , XmlFileLoader $ loader , array $ config )
256+ {
257+ $ container ->setParameter ($ this ->getAlias () . '.test.cache_header ' , $ config ['cache_header ' ]);
258+
259+ if ($ config ['proxy_server ' ]) {
260+ $ this ->loadProxyServer ($ container , $ loader , $ config ['proxy_server ' ]);
261+ }
262+
263+ if (isset ($ config ['client ' ]['varnish ' ]['enabled ' ])
264+ || isset ($ config ['client ' ]['nginx ' ]['enabled ' ])) {
265+ $ loader ->load ('test_client.xml ' );
266+
267+ if ($ config ['client ' ]['varnish ' ]['enabled ' ]) {
268+ $ container ->getDefinition ($ this ->getAlias () . '.test.client.varnish ' )
269+ ->setAbstract (false );
270+ }
271+
272+ if ($ config ['client ' ]['nginx ' ]['enabled ' ]) {
273+ $ container ->getDefinition ($ this ->getAlias () . '.test.client.nginx ' )
274+ ->setAbstract (false );
275+ }
276+
277+ $ container ->setAlias (
278+ $ this ->getAlias () . '.test.default_client ' ,
279+ $ this ->getAlias () . '.test.client. ' . $ this ->getDefault ($ config ['client ' ])
280+ );
281+ }
282+ }
283+
284+ private function loadProxyServer (ContainerBuilder $ container , XmlFileLoader $ loader , array $ config )
285+ {
286+ if (isset ($ config ['varnish ' ])) {
287+ $ this ->loadVarnishProxyServer ($ container , $ loader , $ config ['varnish ' ]);
288+ }
289+
290+ if (isset ($ config ['nginx ' ])) {
291+ $ this ->loadNginxProxyServer ($ container , $ loader , $ config ['varnish ' ]);
292+ }
293+
294+ $ container ->setAlias (
295+ $ this ->getAlias () . '.test.default_proxy_server ' ,
296+ $ this ->getAlias () . '.test.proxy_server. ' . $ this ->getDefault ($ config )
297+ );
298+ }
299+
300+ private function loadVarnishProxyServer (ContainerBuilder $ container , XmlFileLoader $ loader , $ config )
301+ {
302+ $ loader ->load ('varnish_proxy.xml ' );
303+ foreach ($ config as $ key => $ value ) {
304+ $ container ->setParameter (
305+ $ this ->getAlias () . '.test.proxy_server.varnish. ' . $ key ,
306+ $ value
307+ );
308+ }
309+ }
310+
311+ private function loadNginxProxyServer (ContainerBuilder $ container , XmlFileLoader $ loader , $ config )
312+ {
313+ $ loader ->load ('nginx_proxy.xml ' );
314+ foreach ($ config as $ key => $ value ) {
315+ $ container ->setParameter (
316+ $ this ->getAlias () . '.test.proxy_server.nginx. ' . $ key ,
317+ $ value
318+ );
319+ }
320+ }
321+
250322 private function loadTagRules (ContainerBuilder $ container , array $ config )
251323 {
252324 $ tagDefinition = $ container ->getDefinition ($ this ->getAlias () . '.event_listener.tag ' );
@@ -274,13 +346,36 @@ private function loadInvalidatorRules(ContainerBuilder $container, array $config
274346 }
275347
276348 private function validateUrl ($ url , $ msg )
349+ {
350+ $ prefixed = $ this ->prefixSchema ($ url );
351+
352+ if (!$ parts = parse_url ($ prefixed )) {
353+ throw new InvalidConfigurationException (sprintf ($ msg , $ url ));
354+ }
355+ }
356+
357+
358+ private function prefixSchema ($ url )
277359 {
278360 if (false === strpos ($ url , ':// ' )) {
279361 $ url = sprintf ('%s://%s ' , 'http ' , $ url );
280362 }
281363
282- if (!$ parts = parse_url ($ url )) {
283- throw new InvalidConfigurationException (sprintf ($ msg , $ url ));
364+ return $ url ;
365+ }
366+
367+ private function getDefault (array $ config )
368+ {
369+ if (isset ($ config ['default ' ])) {
370+ return $ config ['default ' ];
371+ }
372+
373+ if (isset ($ config ['varnish ' ])) {
374+ return 'varnish ' ;
375+ }
376+
377+ if (isset ($ config ['nginx ' ])) {
378+ return 'nginx ' ;
284379 }
285380 }
286381}
0 commit comments