Completed
Pull Request — develop (#14)
by Denis
25:59 queued 03:56
created

ResolveAdapterDefinitionPass   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 19
Duplicated Lines 0 %

Test Coverage

Coverage 88.89%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 12
c 1
b 0
f 0
dl 0
loc 19
ccs 8
cts 9
cp 0.8889
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A process() 0 17 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Artprima\PrometheusMetricsBundle\DependencyInjection\Compiler;
6
7
use Prometheus\Storage\APC;
8
use Prometheus\Storage\InMemory;
9
use Prometheus\Storage\Redis;
10
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
11
use Symfony\Component\DependencyInjection\ContainerBuilder;
12
13
class ResolveAdapterDefinitionPass implements CompilerPassInterface
14
{
15 6
    public function process(ContainerBuilder $container)
16
    {
17 6
        if (!$container->hasDefinition('prometheus_metrics_bundle.adapter')) {
18
            return;
19
        }
20
21
        $adapterClasses = [
22 6
            'in_memory' => InMemory::class,
23
            'apcu' => APC::class,
24
            'redis' => Redis::class,
25
        ];
26
27 6
        $definition = $container->getDefinition('prometheus_metrics_bundle.adapter');
28 6
        $definition->setAbstract(false);
29 6
        $definition->setClass($adapterClasses[$container->getParameter('prometheus_metrics_bundle.type')]);
30 6
        if ('redis' === $container->getParameter('prometheus_metrics_bundle.type')) {
31 3
            $definition->setArguments([$container->getParameter('prometheus_metrics_bundle.redis')]);
32
        }
33 6
    }
34
}
35