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

RandomClientPool::chooseHttpClient()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 12
ccs 6
cts 6
cp 1
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 6
nc 2
nop 0
crap 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