@@ -57,6 +57,10 @@ public function load(array $configs, ContainerBuilder $container)
57
57
$ this ->loadProxyClient ($ container , $ loader , $ config ['proxy_client ' ]);
58
58
}
59
59
60
+ if (isset ($ config ['test ' ])) {
61
+ $ this ->loadTest ($ container , $ loader , $ config ['test ' ]);
62
+ }
63
+
60
64
if ($ config ['cache_manager ' ]['enabled ' ]) {
61
65
$ loader ->load ('cache_manager.xml ' );
62
66
}
@@ -196,34 +200,33 @@ private function createRequestMatcher(ContainerBuilder $container, $path = null,
196
200
197
201
private function loadProxyClient (ContainerBuilder $ container , XmlFileLoader $ loader , array $ config )
198
202
{
199
- $ default = empty ($ config ['default ' ]) ? false : $ config ['default ' ];
200
203
if (isset ($ config ['varnish ' ])) {
201
204
$ this ->loadVarnish ($ container , $ loader , $ config ['varnish ' ]);
202
- if (!$ default ) {
203
- $ default = 'varnish ' ;
204
- }
205
205
}
206
206
if (isset ($ config ['nginx ' ])) {
207
207
$ this ->loadNginx ($ container , $ loader , $ config ['nginx ' ]);
208
- if (!$ default ) {
209
- $ default = 'nginx ' ;
210
- }
211
208
}
212
209
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
+ );
214
214
}
215
215
216
216
private function loadVarnish (ContainerBuilder $ container , XmlFileLoader $ loader , array $ config )
217
217
{
218
218
$ loader ->load ('varnish.xml ' );
219
219
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" ' );
221
221
}
222
222
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 ;
224
227
}
225
228
$ 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 );
227
230
if ($ config ['guzzle_client ' ]) {
228
231
$ container ->getDefinition ($ this ->getAlias () . '.proxy_client.varnish ' )
229
232
->addArgument (
@@ -237,16 +240,85 @@ private function loadNginx(ContainerBuilder $container, XmlFileLoader $loader, a
237
240
{
238
241
$ loader ->load ('nginx.xml ' );
239
242
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" ' );
241
244
}
242
245
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 ;
244
249
}
245
250
$ 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 );
247
252
$ container ->setParameter ($ this ->getAlias () . '.proxy_client.nginx.purge_location ' , $ config ['purge_location ' ]);
248
253
}
249
254
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
+
250
322
private function loadTagRules (ContainerBuilder $ container , array $ config )
251
323
{
252
324
$ tagDefinition = $ container ->getDefinition ($ this ->getAlias () . '.event_listener.tag ' );
@@ -274,13 +346,36 @@ private function loadInvalidatorRules(ContainerBuilder $container, array $config
274
346
}
275
347
276
348
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 )
277
359
{
278
360
if (false === strpos ($ url , ':// ' )) {
279
361
$ url = sprintf ('%s://%s ' , 'http ' , $ url );
280
362
}
281
363
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 ' ;
284
379
}
285
380
}
286
381
}
0 commit comments