Completed
Push — master ( c44a53...3a33b3 )
by Sergey
02:56
created

GuzzleHttpClient::getResponseHeaders()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace seregazhuk\Favro;
4
5
use GuzzleHttp\ClientInterface;
6
use Psr\Http\Message\ResponseInterface;
7
use seregazhuk\Favro\Contracts\HttpClient;
8
9
class GuzzleHttpClient implements HttpClient
10
{
11
    /**
12
     * @var ClientInterface
13
     */
14
    protected $client;
15
16
    /**
17
     * @var array
18
     */
19
    protected $responseHeaders;
20
21
    /**
22
     * @param ClientInterface $client
23
     */
24
    public function __construct(ClientInterface $client)
25
    {
26
        $this->client = $client;
27
    }
28
29
    /**
30
     * @param string $uri
31
     * @param array $params
32
     * @param array $headers
33
     * @return string
34
     */
35
    public function get($uri, $params = [], $headers = [])
36
    {
37
        if (!empty($params)) {
38
            $uri .= '?' . http_build_query($params);
39
        }
40
41
        $response = $this
42
            ->client
43
            ->get($uri, ['headers' => $headers]);
44
45
        return $this->parseResponse($response);
46
    }
47
48
    /**
49
     * @param string $uri
50
     * @param array $body
51
     * @param array $headers
52
     * @return string
53
     */
54 View Code Duplication
    public function post($uri, $body = [], $headers = [])
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
55
    {
56
        $response = $this
57
            ->client
58
            ->post(
59
                $uri, [
60
                    'headers'     => $headers,
61
                    'form_params' => $body,
62
                ]
63
            );
64
65
        return $this->parseResponse($response);
66
    }
67
68
    /**
69
     * @param string $uri
70
     * @param array $body
71
     * @param array $headers
72
     * @return mixed
73
     */
74 View Code Duplication
    public function put($uri, $body = [], $headers = [])
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
75
    {
76
        $response = $this
77
            ->client
78
            ->put(
79
                $uri, [
80
                    'headers'     => $headers,
81
                    'form_params' => $body,
82
                ]
83
            );
84
85
        return $this->parseResponse($response);
86
    }
87
88
    /**
89
     * @param string $uri
90
     * @param array $body
91
     * @param array $headers
92
     * @return mixed
93
     */
94 View Code Duplication
    public function delete($uri, $body = [], $headers = [])
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
95
    {
96
        $response = $this
97
            ->client
98
            ->delete($uri, [
99
                'headers'     => $headers,
100
                'form_params' => $body,
101
            ]);
102
103
        return $this->parseResponse($response);
104
    }
105
106
    /**
107
     * @param string $url
108
     * @return $this
109
     */
110
    public function setBaseUrl($url)
111
    {
112
        $this->client->setBaseUrl($url);
0 ignored issues
show
Bug introduced by
The method setBaseUrl() does not seem to exist on object<GuzzleHttp\ClientInterface>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
113
        return $this;
114
    }
115
116
    /**
117
     * @param ResponseInterface $response
118
     * @return array|null
119
     */
120
    protected function parseResponse(ResponseInterface $response)
121
    {
122
        $responseContents = $response->getBody()->getContents();
123
124
        $this->responseHeaders = $response->getHeaders();
125
126
        return json_decode($responseContents, true);
127
    }
128
129
    /**
130
     * @return array
131
     */
132
    public function getResponseHeaders()
133
    {
134
        return $this->responseHeaders;
135
    }
136
}