Response   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 81
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 94.44%

Importance

Changes 0
Metric Value
wmc 10
lcom 1
cbo 1
dl 0
loc 81
ccs 17
cts 18
cp 0.9444
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 2
A getCode() 0 4 1
A getMessage() 0 4 1
A getData() 0 10 3
A getResponse() 0 4 1
A getPropertyFromData() 0 4 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