Completed
Push — master ( 3e963f...fbd0cf )
by Yann
02:04
created

TokenConfigurationFactory::create()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 28
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 28
rs 8.8571
c 0
b 0
f 0
cc 2
eloc 16
nc 2
nop 4
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 integer          $duration
20
     * @param ContainerBuilder $container
21
     */
22
    public static function create($purpose, $generator, $duration, ContainerBuilder $container)
23
    {
24
        $id = sprintf('yokai_security_token.configuration.%s', $purpose);
25
26
        if ($container->hasDefinition($id)) {
27
            throw new BadMethodCallException(
28
                sprintf(
29
                    'Cannot register service for security token on "" purpose.'.
30
                    ' A service with id "%s" is already registered.',
31
                    $purpose,
32
                    $id
33
                )
34
            );
35
        }
36
37
        $definition = new Definition(
38
            TokenConfiguration::class,
39
            [
40
                $purpose,
41
                new Reference($generator),
42
                $duration
43
            ]
44
        );
45
46
        $definition->addTag('yokai_security_token.configuration');
47
48
        $container->setDefinition($id, $definition);
49
    }
50
}
51