Completed
Pull Request — master (#49)
by Joel
04:06
created

RandomClientPool   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 18
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 3
dl 0
loc 18
ccs 6
cts 6
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A chooseHttpClient() 0 12 2
1
<?php
2
3
namespace Http\Client\Common\HttpClientPool;
4
5
use Http\Client\Common\Exception\HttpClientNotFoundException;
6
use Http\Client\Common\HttpClientPool;
7
use Http\Client\Common\HttpClientPoolItem;
8
9
/**
10
 * RoundRobinClientPool will choose the next client in the pool.
11
 *
12
 * @author Joel Wurtz <[email protected]>
13
 */
14
final class RandomClientPool extends HttpClientPool
15
{
16
    /**
17
     * {@inheritdoc}
18
     */
19
    protected function chooseHttpClient()
20
    {
21 5
        $clientPool = array_filter($this->clientPool, function (HttpClientPoolItem $clientPoolItem) {
22 4
            return !$clientPoolItem->isDisabled();
23 5
        });
24
25 5
        if (0 === count($clientPool)) {
26 2
            throw new HttpClientNotFoundException('Cannot choose a http client as there is no one present in the pool');
27
        }
28
29 4
        return $clientPool[array_rand($clientPool)];
30
    }
31
}
32