ClientPool   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 98
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 2
Bugs 1 Features 0
Metric Value
wmc 10
c 2
b 1
f 0
lcom 1
cbo 1
dl 0
loc 98
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A setConnections() 0 6 1
A overrideUser() 0 6 1
A overridePassword() 0 6 1
A getClientByName() 0 8 2
A createClient() 0 16 4
1
<?php
2
namespace Metfan\RabbitSetup\Http;
3
4
use Metfan\RabbitSetup\Factory\CurlClientFactory;
5
6
/**
7
 * Pool of HttpClient by connection.
8
 * Lazy createclient on demand
9
 *
10
 * @author Ulrich
11
 * @package Metfan\RabbitSetup\Http
12
 */
13
class ClientPool
14
{
15
    /**
16
     * @var CurlClientFactory
17
     */
18
    private $factory;
19
20
    /**
21
     * @var array
22
     */
23
    private $pool = array();
24
25
    /**
26
     * @var array
27
     */
28
    private $connections;
29
30
    private $user;
31
32
    private $password;
33
34
    public function __construct(CurlClientFactory $factory)
35
    {
36
        $this->factory = $factory;
37
        $this->connections = [];
38
    }
39
40
    /**
41
     * @param array $connections
42
     * @return $this
43
     *
44
     */
45
    public function setConnections(array $connections)
46
    {
47
        $this->connections = $connections;
48
49
        return $this;
50
    }
51
52
    /**
53
     * @param mixed $user
54
     * @return $this
55
     */
56
    public function overrideUser($user)
57
    {
58
        $this->user = $user;
59
60
        return $this;
61
    }
62
63
    /**
64
     * @param mixed $password
65
     * @return $this
66
     */
67
    public function overridePassword($password)
68
    {
69
        $this->password = $password;
70
71
        return $this;
72
    }
73
74
    /**
75
     * Return a Client by his name
76
     *
77
     * @param $name
78
     * @return ClientInterface
79
     */
80
    public function getClientByName($name)
81
    {
82
        if (!array_key_exists($name, $this->pool)) {
83
            $this->createClient($name);
84
        }
85
86
        return $this->pool[$name];
87
    }
88
89
    /**
90
     * create a client
91
     *
92
     * @param $name
93
     */
94
    private function createClient($name)
95
    {
96
        if (!array_key_exists($name, $this->connections)) {
97
            throw new \OutOfRangeException(sprintf('Expected connection %s doesn\'t exists', $name));
98
        }
99
100
        if (null !== $this->user) {
101
            $this->connections[$name]['user'] = $this->user;
102
        }
103
104
        if (null !== $this->password) {
105
            $this->connections[$name]['password'] = $this->password;
106
        }
107
108
        $this->pool[$name] = $this->factory->createClient($this->connections[$name]);
109
    }
110
}
111