ToggleAPIPass   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 15
c 1
b 0
f 0
dl 0
loc 25
ccs 12
cts 12
cp 1
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A process() 0 23 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Pheature\Community\Symfony\DependencyInjection;
6
7
use Symfony\Component\Config\FileLocator;
8
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
9
use Symfony\Component\DependencyInjection\ContainerBuilder;
10
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
11
use Webmozart\Assert\Assert;
12
13
final class ToggleAPIPass implements CompilerPassInterface
14 2
{
15
    public function process(ContainerBuilder $container): void
16
    {
17 2
        /** @var array<array<mixed>> $pheatureFlagsConfig */
18
        $pheatureFlagsConfig = $container->getExtensionConfig('pheature_flags');
19 2
20
        $mergedConfig = array_merge(...$pheatureFlagsConfig);
21 2
        Assert::keyExists($mergedConfig, 'api_enabled');
22 1
        Assert::boolean($mergedConfig['api_enabled']);
23
24
        if (false === $mergedConfig['api_enabled']) {
25 1
            return;
26
        }
27 1
28 1
        Assert::keyExists($mergedConfig, 'api_prefix');
29 1
        Assert::string($mergedConfig['api_prefix']);
30
        $container->getParameterBag()->set('pheature_flags_prefix', $mergedConfig['api_prefix']);
31 1
32 1
        $loader = new YamlFileLoader(
33 1
            $container,
34
            new FileLocator(__DIR__ . '/../Resources/config/toggle_api')
35
        );
36
        $loader->load('services/controller_services.yaml');
37
        $loader->load('services/handler_services.yaml');
38
    }
39
}
40