Completed
Pull Request — master (#136)
by Fabien
04:41
created

ProfileClient::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 5
ccs 4
cts 4
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 2
crap 1
1
<?php
2
3
namespace Http\HttplugBundle\Collector;
4
5
use Http\Client\Common\FlexibleHttpClient;
6
use Http\Client\HttpAsyncClient;
7
use Http\Client\HttpClient;
8
use Psr\Http\Message\RequestInterface;
9
10
/**
11
 * The ProfileClient decorates any HttpClient (or HttpAsyncClient) to gather target url and response status code.
12
 *
13
 * @author Fabien Bourigault <[email protected]>
14
 *
15
 * @internal
16
 */
17
class ProfileClient implements HttpClient, HttpAsyncClient
18
{
19
    /**
20
     * @var FlexibleHttpClient
21
     */
22
    private $client;
23
24
    /**
25
     * @var Collector
26
     */
27
    private $collector;
28
29
    /**
30
     * @param HttpClient|HttpAsyncClient $client
31
     * @param Collector                  $collector
32
     */
33 1
    public function __construct($client, Collector $collector)
34
    {
35 1
        $this->client = new FlexibleHttpClient($client);
36 1
        $this->collector = $collector;
37 1
    }
38
39
    /**
40
     * {@inheritdoc}
41
     */
42
    public function sendAsyncRequest(RequestInterface $request)
43
    {
44
        $this->collectRequestInformations($request);
45
46
        return $this->client->sendAsyncRequest($request);
47
    }
48
49
    /**
50
     * {@inheritdoc}
51
     */
52
    public function sendRequest(RequestInterface $request)
53
    {
54
        $this->collectRequestInformations($request);
55
56
        return $this->client->sendRequest($request);
57
    }
58
59
    /**
60
     * @param RequestInterface $request
61
     */
62
    private function collectRequestInformations(RequestInterface $request)
63
    {
64
        if (!$stack = $this->collector->getCurrentStack()) {
65
            return;
66
        }
67
68
        $stack = $this->collector->getCurrentStack();
69
        $stack->setRequestTarget($request->getRequestTarget());
70
        $stack->setRequestMethod($request->getMethod());
71
    }
72
}
73