Completed
Pull Request — master (#73)
by Tobias
02:40
created

RequestManager::setHttpClient()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
rs 9.4286
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
3
namespace Happyr\LinkedIn\Http;
4
5
use Happyr\LinkedIn\Exception\LinkedInTransferException;
6
use Http\Client\Exception\TransferException;
7
use Http\Client\HttpClient;
8
use Http\Discovery\HttpClientDiscovery;
9
use Http\Discovery\MessageFactoryDiscovery;
10
11
/**
12
 * A request manager builds a request.
13
 *
14
 * @author Tobias Nyholm <[email protected]>
15
 */
16
class RequestManager
17
{
18
    /**
19
     * @var \Http\Client\HttpClient
20
     */
21
    private $httpClient;
22
23
    /**
24
     * @param string $method
25
     * @param string $uri
26
     * @param array  $headers
27
     * @param string $body
28
     *
29
     * @return \Psr\Http\Message\ResponseInterface
30
     */
31
    public function sendRequest($method, $uri, array $headers = [], $body = null)
32
    {
33
        $request = MessageFactoryDiscovery::find()->createRequest($method, $uri, $headers, $body);
34
35
        try {
36
            return $this->getHttpClient()->sendRequest($request);
37
        } catch (TransferException $e) {
38
            throw new LinkedInTransferException('Error while requesting data from LinkedIn.com: '.$e->getMessage(), $e->getCode(), $e);
39
        }
40
    }
41
42
    /**
43
     * @param \Http\Client\HttpClient $httpClient
44
     *
45
     * @return RequestManager
46
     */
47
    public function setHttpClient(HttpClient $httpClient)
48
    {
49
        $this->httpClient = $httpClient;
50
51
        return $this;
52
    }
53
54
    /**
55
     * @return HttpClient
56
     */
57
    protected function getHttpClient()
58
    {
59
        if ($this->httpClient === null) {
60
            $this->httpClient = HttpClientDiscovery::find();
61
        }
62
63
        return $this->httpClient;
64
    }
65
}
66