Completed
Push — master ( cb42e4...38bddd )
by Yann
01:59
created

TokenConfigurationFactory::create()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 30
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 2.0094

Importance

Changes 0
Metric Value
dl 0
loc 30
ccs 13
cts 15
cp 0.8667
rs 8.8571
c 0
b 0
f 0
cc 2
eloc 18
nc 2
nop 6
crap 2.0094
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