Response::getPropertyFromData()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 1
crap 2
1
<?php
2
3
namespace EtherpadLite;
4
5
use Psr\Http\Message\ResponseInterface;
6
7
class Response
8
{
9
    const CODE_OK = 0;
10
    const CODE_WRONG_PARAMETERS = 1;
11
    const CODE_INTERNAL_ERROR = 2;
12
    const CODE_NO_SUCH_FUNCTION = 3;
13
    const CODE_NO_OR_WRONG_API_KEY = 4;
14
15
    /** @var array */
16
    private $data;
17
18
    /**
19
     * @param ResponseInterface $response
20
     */
21 5
    public function __construct(ResponseInterface $response)
22
    {
23 5
        if ($response->getStatusCode() === 200) {
24 5
            $this->data = (array)\GuzzleHttp\json_decode($response->getBody(), true);
0 ignored issues
show
Deprecated Code introduced by
The function GuzzleHttp\json_decode() has been deprecated with message: json_decode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonDecode instead.

This function has been deprecated. The supplier of the file has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the function will be removed from the class and what other function to use instead.

Loading history...
25
        } else {
26
            $this->data = [];
27
        }
28 5
    }
29
30
    /**
31
     * @return string|null
32
     */
33 4
    public function getCode(): ?string
34
    {
35 4
        return $this->getPropertyFromData('code');
36
    }
37
38
    /**
39
     * @return string|null
40
     */
41 4
    public function getMessage(): ?string
42
    {
43 4
        return $this->getPropertyFromData('message');
44
    }
45
46
    /**
47
     * Get Response Data Array.
48
     *
49
     * By default the whole array will be returned. In order to retrieve just a key based response, provide an array Key.
50
     *
51
     * ```php
52
     * $response = (new Client())->createAuthorIfNotExistsFor(1, 'John Doe');
53
     * $authorId = $response->getData('authorID');
54
     * ```
55
     *
56
     * @param string $key Access a given key from the data array, if no key is provided all data will be returned.
57
     * @param mixed $defaultValue If the given key is not found in the array, the $defaultValue will be returned.
58
     * @return array|string|null
59
     */
60 5
    public function getData($key = null, $defaultValue = null)
61
    {
62 5
        $data = $this->getPropertyFromData('data');
63
64 5
        if (null !== $key) {
65 1
            return isset($data[$key]) ? $data[$key] : $defaultValue;
66
        }
67
68 4
        return $data;
69
    }
70
71
    /**
72
     * @return array
73
     */
74 4
    public function getResponse(): array
75
    {
76 4
        return $this->data;
77
    }
78
79
    /**
80
     * @param string $key
81
     * @return mixed
82
     */
83 5
    private function getPropertyFromData($key)
84
    {
85 5
        return isset($this->data[$key]) ? $this->data[$key] : null;
86
    }
87
}
88