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

FlysystemResolverFactory   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 3
c 1
b 0
f 1
lcom 0
cbo 7
dl 0
loc 43
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A create() 0 15 1
A getName() 0 4 1
A addConfiguration() 0 10 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