Completed
Push — master ( 178a08...5c0b6f )
by Oleg
05:22
created

TokenHydratorFactory::__invoke()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 15
ccs 10
cts 10
cp 1
rs 9.7666
c 0
b 0
f 0
cc 1
nc 1
nop 3
crap 1
1
<?php
2
declare(strict_types=1);
3
4
namespace SlayerBirden\DataFlowServer\Authentication\Factory;
5
6
use Interop\Container\ContainerInterface;
7
use SlayerBirden\DataFlowServer\Authentication\Entities\Grant;
8
use SlayerBirden\DataFlowServer\Doctrine\Hydrator\Strategy\CollectionStrategy;
9
use SlayerBirden\DataFlowServer\Doctrine\Hydrator\Strategy\NestedEntityStrategy;
10
use Zend\Hydrator\ClassMethods;
11
use Zend\Hydrator\NamingStrategy\MapNamingStrategy;
12
use Zend\Hydrator\Strategy\BooleanStrategy;
13
use Zend\Hydrator\Strategy\DateTimeFormatterStrategy;
14
use Zend\ServiceManager\Factory\FactoryInterface;
15
16
class TokenHydratorFactory implements FactoryInterface
17
{
18
    /**
19
     * @inheritdoc
20
     */
21 16
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
22
    {
23 16
        $extraction = new ClassMethods();
24 16
        $extraction->addStrategy('created_at', new DateTimeFormatterStrategy());
25 16
        $extraction->addStrategy('due', new DateTimeFormatterStrategy());
26 16
        $extraction->addStrategy('active', new BooleanStrategy(1, 0));
27 16
        $extraction->addStrategy('grants', new CollectionStrategy(new ClassMethods(), Grant::class));
28 16
        $extraction->addStrategy('owner', new NestedEntityStrategy(new ClassMethods()));
29
30 16
        $extraction->setNamingStrategy(new MapNamingStrategy([], [
31 16
            'isActive' => 'active',
32
        ]));
33
34 16
        return $extraction;
35
    }
36
}
37