Total Complexity | 6 |
Total Lines | 68 |
Duplicated Lines | 0 % |
Coverage | 97.56% |
Changes | 0 |
1 | <?php |
||
26 | class YnloGraphQLExtension extends Extension |
||
27 | { |
||
28 | /** |
||
29 | * {@inheritdoc} |
||
30 | */ |
||
31 | 1 | public function load(array $configs, ContainerBuilder $container) |
|
32 | { |
||
33 | 1 | $configuration = new Configuration(); |
|
34 | 1 | $config = $this->processConfiguration($configuration, $configs); |
|
35 | |||
36 | 1 | if (!isset($config['namespaces']['bundles']['aliases']['GraphQLBundle'])) { |
|
37 | 1 | $config['namespaces']['bundles']['aliases']['GraphQLBundle'] = 'AppBundle'; |
|
38 | } |
||
39 | |||
40 | 1 | $container->setParameter('graphql.config', $config); |
|
41 | 1 | $container->setParameter('graphql.pagination', $config['pagination'] ?? []); |
|
42 | 1 | $container->setParameter('graphql.error_handling', $config['error_handling'] ?? []); |
|
43 | 1 | $container->setParameter('graphql.error_handling.controlled_errors', $config['error_handling']['controlled_errors'] ?? []); |
|
44 | 1 | $container->setParameter('graphql.error_handling.jwt_auth_failure_compatibility', $config['error_handling']['jwt_auth_failure_compatibility'] ?? false); |
|
45 | 1 | $container->setParameter('graphql.namespaces', $config['namespaces'] ?? []); |
|
46 | 1 | $container->setParameter('graphql.cors_config', $config['cors'] ?? []); |
|
47 | 1 | $container->setParameter('graphql.graphiql', $config['graphiql'] ?? []); |
|
48 | 1 | $container->setParameter('graphql.graphiql_auth_jwt', $config['graphiql']['authentication']['provider']['jwt'] ?? []); |
|
49 | 1 | $container->setParameter('graphql.security.validation_rules', $config['security']['validation_rules'] ?? []); |
|
50 | |||
51 | 1 | $endpointsConfig = []; |
|
52 | 1 | $endpointsConfig['endpoints'] = $config['endpoints'] ?? []; |
|
53 | 1 | $endpointsConfig['default'] = $config['endpoint_default'] ?? null; |
|
54 | 1 | $endpointsConfig['alias'] = $config['endpoint_alias'] ?? []; |
|
55 | |||
56 | 1 | $container->setParameter('graphql.endpoints', $endpointsConfig); |
|
57 | 1 | $container->setParameter('graphql.endpoints_list', array_keys($endpointsConfig['endpoints'])); |
|
58 | |||
59 | 1 | $graphiQLAuthProvider = null; |
|
60 | 1 | if ($config['graphiql']['authentication']['provider']['jwt']['enabled'] ?? false) { |
|
61 | 1 | $graphiQLAuthProvider = JWTGraphiQLAuthentication::class; |
|
62 | } |
||
63 | 1 | if ($config['graphiql']['authentication']['provider']['custom'] ?? false) { |
|
64 | $graphiQLAuthProvider = $config['graphiql']['authentication']['provider']['custom']; |
||
65 | } |
||
66 | 1 | $container->setParameter('graphql.graphiql_auth_provider', $graphiQLAuthProvider); |
|
67 | |||
68 | 1 | $configDir = __DIR__.'/../Resources/config'; |
|
69 | 1 | $loader = new YamlFileLoader($container, new FileLocator($configDir)); |
|
70 | 1 | $loader->load('services.yml'); |
|
71 | |||
72 | 1 | if ($container->getParameter('kernel.environment') !== 'dev') { |
|
73 | 1 | $container->getDefinition(DefinitionCacheWarmer::class)->clearTag('kernel.event_subscriber'); |
|
74 | } |
||
75 | |||
76 | //build the ID encoder manager with configured encoder |
||
77 | 1 | $container->getDefinition(IDEncoderManager::class) |
|
78 | 1 | ->setPublic(true) |
|
79 | 1 | ->replaceArgument(0, $container->getDefinition($config['id_encoder'])); |
|
80 | |||
81 | |||
82 | //endpoint definition |
||
83 | 1 | $container->getDefinition(GraphQLEndpointController::class) |
|
84 | 1 | ->addMethodCall('setErrorFormatter', [$container->getDefinition($config['error_handling']['formatter'])]) |
|
85 | 1 | ->addMethodCall('setErrorHandler', [$container->getDefinition($config['error_handling']['handler'])]); |
|
86 | 1 | } |
|
87 | |||
88 | /** |
||
89 | * {@inheritDoc} |
||
90 | */ |
||
91 | 1 | public function getAlias() |
|
94 | } |
||
95 | } |
||
96 |