Skip to content

Commit 26504f6

Browse files
committed
WIP
1 parent 8aad980 commit 26504f6

File tree

3 files changed

+68
-22
lines changed

3 files changed

+68
-22
lines changed

DependencyInjection/Configuration.php

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
namespace Wtfz\TmdbBundle\DependencyInjection;
44

5+
use Monolog\Logger;
56
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
67
use Symfony\Component\Config\Definition\ConfigurationInterface;
8+
use Tmdb\Client;
79

810
/**
911
* This is the class that validates and merges configuration from your app/config files
@@ -23,20 +25,33 @@ public function getConfigTreeBuilder()
2325
$rootNode
2426
->children()
2527
->scalarNode('api_key')->isRequired()->cannotBeEmpty()->end()
26-
->arrayNode('cache')
27-
->canBeEnabled()
28-
->children()
29-
->scalarNode('path')->defaultValue('%kernel.cache_dir%/tmdb')->end()
30-
->end()
31-
->end()
32-
->arrayNode('log')
33-
->canBeEnabled()
28+
->arrayNode('repositories')->canBeDisabled()->end()
29+
->arrayNode('twig_extension')->canBeDisabled()->end()
30+
->arrayNode('options')
3431
->children()
35-
->scalarNode('path')->defaultValue('%kernel.logs_dir%/tmdb.log')->end()
32+
->scalarNode('adapter')->defaultValue(null)->end()
33+
->scalarNode('secure')->defaultValue(true)->end()
34+
->scalarNode('host')->defaultValue(Client::TMDB_URI)->end()
35+
->scalarNode('session_token')->defaultValue(null)->end()
36+
->arrayNode('cache')
37+
->canBeDisabled()
38+
->children()
39+
->scalarNode('path')->defaultValue('%kernel.cache_dir%/themoviedb')->end()
40+
->scalarNode('handler')->defaultValue(null)->end()
41+
->scalarNode('subscriber')->defaultValue(null)->end()
42+
->end()
43+
->end()
44+
->arrayNode('log')
45+
->canBeEnabled()
46+
->children()
47+
->scalarNode('level')->defaultValue(Logger::DEBUG)->end()
48+
->scalarNode('path')->defaultValue('%kernel.logs_dir%/themoviedb.log')->end()
49+
->scalarNode('handler')->defaultValue(null)->end()
50+
->scalarNode('subscriber')->defaultValue(null)->end()
51+
->end()
52+
->end()
3653
->end()
3754
->end()
38-
->arrayNode('repositories')->canBeDisabled()->end()
39-
->arrayNode('twig_extension')->canBeDisabled()->end()
4055
->end();
4156

4257
return $treeBuilder;

DependencyInjection/WtfzTmdbExtension.php

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,47 @@ public function load(array $configs, ContainerBuilder $container)
2727

2828
$container->setParameter('wtfz_tmdb.api_key', $config['api_key']);
2929

30-
if ($config['cache']['enabled']) {
31-
$path = $container->getParameterBag()->resolveValue($config['cache']['path']);
32-
$container->getDefinition('wtfz_tmdb.client')->addMethodCall('setCaching', array(true, $path));
33-
}
34-
35-
if ($config['log']['enabled']) {
36-
$path = $container->getParameterBag()->resolveValue($config['log']['path']);
37-
$container->getDefinition('wtfz_tmdb.client')->addMethodCall('setLogging', array(true, $path));
38-
}
39-
4030
if ($config['repositories']['enabled']) {
4131
$loader->load('repositories.xml');
4232
}
4333

4434
if ($config['twig_extension']['enabled']) {
4535
$loader->load('twig.xml');
4636
}
37+
38+
$options = $config['options'];
39+
40+
if ($options['cache']['enabled']) {
41+
$options = $this->handleCache($options);
42+
}
43+
44+
if ($options['log']['enabled']) {
45+
$options = $this->handleLog($options);
46+
}
47+
48+
foreach($options as $key => $value) {
49+
$container->setParameter(sprintf(
50+
'wtfz_tmdb.options.%s',
51+
$key
52+
), $value);
53+
}
54+
}
55+
56+
protected function handleCache($options)
57+
{
58+
if (null !== $handler = $options['cache']['handler']) {
59+
$options['cache']['handler'] = !is_string($handler) ? $handler: new $handler();
60+
}
61+
62+
return $options;
63+
}
64+
65+
protected function handleLog($options)
66+
{
67+
if (null !== $handler = $options['log']['handler']) {
68+
$options['log']['handler'] = !is_string($handler) ? $handler: new $handler();
69+
}
70+
71+
return $options;
4772
}
4873
}

Resources/config/services.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,16 @@
1717
<services>
1818
<service id="wtfz_tmdb.client" class="%wtfz_tmdb.client.class%">
1919
<argument type="service" id="wtfz_tmdb.api_token" />
20+
<argument type="collection">
21+
<argument key="event_dispatcher" type="service" id="event_dispatcher" />
22+
<argument key="secure">%wtfz_tmdb.options.secure%</argument>
23+
<argument key="adapter">%wtfz_tmdb.options.adapter%</argument>
24+
<argument key="cache">%wtfz_tmdb.options.cache%</argument>
25+
<argument key="log">%wtfz_tmdb.options.log%</argument>
26+
</argument>
2027
</service>
2128
<service id="wtfz_tmdb.api_token" class="%wtfz_tmdb.api_token.class%" public="false">
2229
<argument>%wtfz_tmdb.api_key%</argument>
2330
</service>
2431
</services>
25-
2632
</container>

0 commit comments

Comments
 (0)