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

RandomClientPool   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 18
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

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

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
    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