Passed
Push — master ( 982584...ad0d37 )
by Louis
02:00
created

Response::getResponse()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 1
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 1
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);
25 5
        } else {
26 1
            $this->data = array();
27
        }
28 5
    }
29
30
    /**
31
     * @return string|null
32
     */
33 4
    public function getCode()
34
    {
35 4
        return $this->getPropertyFromData('code');
36
    }
37
38
    /**
39
     * @return string|null
40
     */
41 4
    public function getMessage()
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 string|null
59
     */
60 5
    public function getData($key = null, $defaultValue = null)
61
    {
62 5
        $data = $this->getPropertyFromData('data');
63
        
64 5
        if ($key) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $key of type string|null is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
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()
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