Scrutinizer GitHub App not installed

We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.

Install GitHub App

Passed
Pull Request — master (#615)
by Stefano
21:01
created

ResolverMapTaggedServiceMappingPass   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 9
eloc 23
c 1
b 0
f 0
dl 0
loc 46
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B process() 0 39 9
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Overblog\GraphQLBundle\DependencyInjection\Compiler;
6
7
use Overblog\GraphQLBundle\EventListener\TypeDecoratorListener;
8
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
9
use Symfony\Component\DependencyInjection\ContainerBuilder;
10
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
11
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
12
use Symfony\Component\DependencyInjection\Reference;
13
14
final class ResolverMapTaggedServiceMappingPass implements CompilerPassInterface
15
{
16
    private const SERVICE_TAG = 'overblog_graphql.resolver_map';
17
18
    /**
19
     * {@inheritdoc}
20
     */
21
    public function process(ContainerBuilder $container): void
22
    {
23
        $resolverMapsBySchemas = $container->getParameter('overblog_graphql.resolver_maps');
24
        $typeDecoratorListenerDefinition = $container->getDefinition(TypeDecoratorListener::class);
25
26
        foreach ($container->findTaggedServiceIds(self::SERVICE_TAG, true) as $serviceId => $tags) {
27
            foreach ($tags as $tag) {
28
                if (isset($tag['schema'])) {
29
                    $schemaName = $tag['schema'];
30
                } else {
31
                    if (1 < \count($resolverMapsBySchemas)) {
32
                        throw new InvalidArgumentException(\sprintf('Service "%s" must define the "schema" attribute on "%s" tags.', $serviceId, self::SERVICE_TAG));
33
                    }
34
35
                    $schemaName = 'default';
36
                }
37
38
                if (!isset($resolverMapsBySchemas[$schemaName])) {
39
                    throw new RuntimeException(\sprintf('Service "%s" is invalid: schema "%s" specified on the tag "%s" does not exist (known ones are: "%s").', $serviceId, $schemaName, self::SERVICE_TAG, \implode('", "', \array_keys($resolverMapsBySchemas))));
40
                }
41
42
                if (!\in_array($serviceId, $resolverMapsBySchemas[$schemaName], true)) {
43
                    $resolverMapsBySchemas[$schemaName][] = $serviceId;
44
                }
45
            }
46
        }
47
48
        foreach ($resolverMapsBySchemas as $schemaName => $resolverMaps) {
49
            foreach ($resolverMaps as $index => $resolverMap) {
50
                $resolverMaps[$index] = new Reference($resolverMap);
51
            }
52
53
            $typeDecoratorListenerDefinition->addMethodCall('addSchemaResolverMaps', [
54
                $schemaName,
55
                $resolverMaps,
56
            ]);
57
        }
58
59
        $container->getParameterBag()->remove('overblog_graphql.resolver_maps');
60
    }
61
}
62