Completed
Push — master ( 27322f...ead5e5 )
by Yann
02:16
created

TokenConfigurationFactory   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Dependencies 3

Test Coverage

Coverage 86.67%

Importance

Changes 0
Metric Value
wmc 2
cbo 3
dl 0
loc 41
ccs 13
cts 15
cp 0.8667
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B create() 0 30 2
1
<?php
2
3
namespace Yokai\SecurityTokenBundle\DependencyInjection\Factory;
4
5
use BadMethodCallException;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\Definition;
8
use Symfony\Component\DependencyInjection\Reference;
9
use Yokai\SecurityTokenBundle\Configuration\TokenConfiguration;
10
11
/**
12
 * @author Yann Eugoné <[email protected]>
13
 */
14
class TokenConfigurationFactory
15
{
16
    /**
17
     * @param string           $purpose
18
     * @param string           $generator
19
     * @param string           $duration
20
     * @param integer          $usages
21
     * @param string           $keep
22
     * @param ContainerBuilder $container
23
     */
24 3
    public static function create($purpose, $generator, $duration, $usages, $keep, ContainerBuilder $container)
25
    {
26 3
        $id = sprintf('yokai_security_token.configuration.%s', $purpose);
27
28 3
        if ($container->hasDefinition($id)) {
29
            throw new BadMethodCallException(
30
                sprintf(
31
                    'Cannot register service for security token on "%s" purpose.'.
32
                    ' A service with id "%s" is already registered.',
33
                    $purpose,
34
                    $id
35
                )
36
            );
37
        }
38
39 3
        $definition = new Definition(
40 3
            TokenConfiguration::class,
41
            [
42 3
                $purpose,
43 3
                new Reference($generator),
44 3
                $duration,
45 3
                $usages,
46 3
                $keep
47
            ]
48
        );
49
50 3
        $definition->addTag('yokai_security_token.configuration');
51
52 3
        $container->setDefinition($id, $definition);
53 3
    }
54
}
55