Completed
Push — master ( 0136c1...94aca9 )
by Lukas Kahwe
03:29
created

FlysystemResolverFactory::addConfiguration()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 10
rs 9.4285
cc 1
eloc 7
nc 1
nop 1
1
<?php
2
3
namespace Liip\ImagineBundle\DependencyInjection\Factory\Resolver;
4
5
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\DefinitionDecorator;
8
use Symfony\Component\DependencyInjection\Reference;
9
10
class FlysystemResolverFactory implements ResolverFactoryInterface
11
{
12
    /**
13
     * {@inheritdoc}
14
     */
15
    public function create(ContainerBuilder $container, $resolverName, array $config)
16
    {
17
        $resolverDefinition = new DefinitionDecorator('liip_imagine.cache.resolver.prototype.flysystem');
18
        $resolverDefinition->replaceArgument(0, new Reference($config['filesystem_service']));
19
        $resolverDefinition->replaceArgument(2, $config['root_url']);
20
        $resolverDefinition->replaceArgument(3, $config['cache_prefix']);
21
        $resolverDefinition->addTag('liip_imagine.cache.resolver', array(
22
            'resolver' => $resolverName,
23
        ));
24
        $resolverId = 'liip_imagine.cache.resolver.'.$resolverName;
25
26
        $container->setDefinition($resolverId, $resolverDefinition);
27
28
        return $resolverId;
29
    }
30
31
    /**
32
     * {@inheritdoc}
33
     */
34
    public function getName()
35
    {
36
        return 'flysystem';
37
    }
38
39
    /**
40
     * {@inheritdoc}
41
     */
42
    public function addConfiguration(ArrayNodeDefinition $builder)
43
    {
44
        $builder
45
            ->children()
46
                ->scalarNode('filesystem_service')->isRequired()->cannotBeEmpty()->end()
47
                ->scalarNode('cache_prefix')->defaultValue(null)->end()
48
                ->scalarNode('root_url')->isRequired()->cannotBeEmpty()->end()
49
            ->end()
50
        ;
51
    }
52
}
53