ClientFactory::create()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 21
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 2.0185

Importance

Changes 0
Metric Value
dl 0
loc 21
ccs 10
cts 12
cp 0.8333
rs 9.3142
c 0
b 0
f 0
cc 2
eloc 13
nc 2
nop 2
crap 2.0185
1
<?php
2
3
namespace Rs\VersionEye\Http;
4
5
use Http\Client\Common\Plugin;
6
use Http\Client\Common\PluginClient;
7
use Http\Discovery;
8
use Http\Message\Authentication\QueryParam;
9
use Http\Message\MultipartStream\MultipartStreamBuilder;
10
11
/**
12
 * Factory for creating Http Client.
13
 *
14
 * @author Robert Schönthal <[email protected]>
15
 */
16
class ClientFactory
17
{
18
    /**
19
     * @param string $url
20
     * @param string $token
21
     *
22
     * @return HttpClient
23
     */
24 8
    public static function create($url, $token)
25
    {
26
        $plugins = [
27 8
            new Plugin\RedirectPlugin(),
28 8
            new Plugin\RetryPlugin(['retries' => 5]),
29 8
            new Plugin\DecoderPlugin(),
30 8
            new Plugin\ErrorPlugin(),
31
        ];
32
33 8
        if ($token) {
34
            $plugins[] = new Plugin\AuthenticationPlugin(new QueryParam([
35
                'api_key' => $token,
36
            ]));
37
        }
38
39 8
        $client        = new PluginClient(Discovery\HttpClientDiscovery::find(), $plugins);
40 8
        $streamFactory = Discovery\StreamFactoryDiscovery::find();
41 8
        $builder       = new MultipartStreamBuilder($streamFactory);
42
43 8
        return new HttpPlugHttpAdapterClient($client, $url, Discovery\MessageFactoryDiscovery::find(), $builder);
44
    }
45
}
46