Completed
Pull Request — master (#25)
by Joel
08:51
created

RandomClientPool::chooseHttpClient()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 12
rs 9.4285
cc 2
eloc 6
nc 2
nop 0
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
    public function chooseHttpClient()
20
    {
21
        $clientPool = array_filter($this->clientPool, function (HttpClientPoolItem $clientPoolItem) {
22
            return !$clientPoolItem->isDisabled();
23
        });
24
25
        if (0 === count($clientPool)) {
26
            throw new HttpClientNotFoundException('Cannot choose a http client as there is no one present in the pool');
27
        }
28
29
        return $clientPool[array_rand($clientPool)];
30
    }
31
}
32