Completed
Push — feature/guzzle-client-pointcut ( 38c84b )
by Daan van
02:40
created

SurfnetStepupMiddlewareClientExtension   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Importance

Changes 8
Bugs 0 Features 0
Metric Value
wmc 6
c 8
b 0
f 0
lcom 1
cbo 7
dl 0
loc 77
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A load() 0 14 1
A configureMiddlewareApiCredentials() 0 6 1
A configureMiddlewareCommandApiUrl() 0 5 1
A configureMiddlewareReadApiClient() 0 20 1
A configureGuzzleClientConfigurator() 0 8 2
1
<?php
2
3
/**
4
 * Copyright 2014 SURFnet bv
5
 *
6
 * Licensed under the Apache License, Version 2.0 (the "License");
7
 * you may not use this file except in compliance with the License.
8
 * You may obtain a copy of the License at
9
 *
10
 *     http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing, software
13
 * distributed under the License is distributed on an "AS IS" BASIS,
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
 * See the License for the specific language governing permissions and
16
 * limitations under the License.
17
 */
18
19
namespace Surfnet\StepupMiddlewareClientBundle\DependencyInjection;
20
21
use Symfony\Component\Config\Definition\Processor;
22
use Symfony\Component\Config\FileLocator;
23
use Symfony\Component\DependencyInjection\ContainerBuilder;
24
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
25
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
26
27
class SurfnetStepupMiddlewareClientExtension extends Extension
28
{
29
    public function load(array $config, ContainerBuilder $container)
30
    {
31
        $processor = new Processor();
32
        $config = $processor->processConfiguration(new Configuration(), $config);
0 ignored issues
show
Coding Style introduced by
Consider using a different name than the parameter $config. This often makes code more readable.
Loading history...
33
34
        $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
35
        $loader->load('library.yml');
36
        $loader->load('services.yml');
37
38
        $this->configureMiddlewareApiCredentials($config, $container);
39
        $this->configureMiddlewareCommandApiUrl($config, $container);
40
        $this->configureMiddlewareReadApiClient($config, $container);
41
        $this->configureGuzzleClientConfigurator($config, $container);
42
    }
43
44
    /**
45
     * @param array            $config
46
     * @param ContainerBuilder $container
47
     */
48
    private function configureMiddlewareApiCredentials(array $config, ContainerBuilder $container)
49
    {
50
        $commandService = $container->getDefinition('surfnet_stepup_middleware_client.library.service.command');
51
        $commandService->replaceArgument(1, $config['authorisation']['username']);
52
        $commandService->replaceArgument(2, $config['authorisation']['password']);
53
    }
54
55
    /**
56
     * @param array            $config
57
     * @param ContainerBuilder $container
58
     * @return \Symfony\Component\DependencyInjection\Definition
0 ignored issues
show
Documentation introduced by
Should the return type not be \Symfony\Component\Depen...jection\Definition|null?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
59
     */
60
    private function configureMiddlewareCommandApiUrl(array $config, ContainerBuilder $container)
61
    {
62
        $guzzle = $container->getDefinition('surfnet_stepup_middleware_client.guzzle.commands');
63
        $guzzle->replaceArgument(0, ['base_url' => $config['url']['command_api']]);
64
    }
65
66
    /**
67
     * @param array            $config
68
     * @param ContainerBuilder $container
69
     */
70
    private function configureMiddlewareReadApiClient(array $config, ContainerBuilder $container)
71
    {
72
        $guzzle = $container->getDefinition('surfnet_stepup_middleware_client.guzzle.api');
73
        $guzzle->replaceArgument(
74
            0,
75
            [
76
                'base_url' => $config['url']['api'],
77
                'defaults' => [
78
                    'auth'    => [
79
                        $config['authorisation']['username'],
80
                        $config['authorisation']['password'],
81
                        'basic'
82
                    ],
83
                    'headers' => [
84
                        'Accept' => 'application/json'
85
                    ]
86
                ]
87
            ]
88
        );
89
    }
90
91
    /**
92
     * @param array            $config
93
     * @param ContainerBuilder $container
94
     */
95
    private function configureGuzzleClientConfigurator(array $config, ContainerBuilder $container)
96
    {
97
        if ($config['guzzle_client_configurator_service']) {
98
            $container
99
                ->getDefinition('surfnet_stepup_middleware_cleint.guzzle_client_configurator_pointcut')
100
                ->setArguments([$container->getDefinition($config['guzzle_client_configurator_service'])]);
101
        }
102
    }
103
}
104