Completed
Push — master ( aecb60...ed27b1 )
by Carsten
04:31
created

Response::asRaw()   B

Complexity

Conditions 4
Paths 2

Size

Total Lines 25
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 0
Metric Value
dl 0
loc 25
ccs 0
cts 17
cp 0
rs 8.5806
c 0
b 0
f 0
cc 4
eloc 15
nc 2
nop 1
crap 20
1
<?php
2
namespace Lenius\Economic\API;
3
4
/**
5
 * @class      Economic_Response
6
 */
7
class Response
8
{
9
    /**
10
     * HTTP status code of request.
11
     *
12
     * @var integer
13
     */
14
    protected $status_code;
15
16
    /**
17
     * The headers sent during the request.
18
     *
19
     * @var string
20
     */
21
    protected $sent_headers;
22
23
    /**
24
     * The headers received during the request.
25
     *
26
     * @var string
27
     */
28
    protected $received_headers;
29
30
    /**
31
     * Response body of last request.
32
     *
33
     * @var string
34
     */
35
    protected $response_data;
36
37
38
    /**
39
     * Response constructor.
40
     * @param $status_code
41
     * @param $sent_headers
42
     * @param $received_headers
43
     * @param $response_data
44
     */
45 4
    public function __construct($status_code, $sent_headers, $received_headers, $response_data)
46
    {
47 4
        $this->status_code = $status_code;
48 4
        $this->sent_headers = $sent_headers;
49 4
        $this->received_headers = $received_headers;
50 4
        $this->response_data = $response_data;
51 4
    }
52
53
54
    /**
55
     * @param bool $keep_authorization_value
56
     * @return array
57
     */
58
    public function asRaw($keep_authorization_value = false)
59
    {
60
        // To avoid unintentional logging of credentials the default is to mask the value of the Authorization: header
61
        if ($keep_authorization_value) {
62
            $sent_headers = $this->sent_headers;
63
        } else {
64
            // Avoid dependency on mbstring
65
            $lines = explode("\n", $this->sent_headers);
66
            foreach ($lines as &$line) {
67
                if (strpos($line, 'Authorization: ') === 0) {
68
                    $line = 'Authorization: <hidden by default>';
69
                }
70
            }
71
            $sent_headers = implode("\n", $lines);
72
        }
73
74
        return array(
75
            $this->status_code,
76
            array(
77
                'sent' => $sent_headers,
78
                'received' => $this->received_headers,
79
            ),
80
            $this->response_data,
81
        );
82
    }
83
84
    /**
85
     * asArray
86
     *
87
     * Returns the response body as an array
88
     *
89
     * @return array
90
     */
91
    public function asArray()
92
    {
93
        if ($response = json_decode($this->response_data, true)) {
94
            return $response;
95
        }
96
97
        return array();
98
    }
99
100
    /**
101
     * asObject
102
     *
103
     * Returns the response body as an array
104
     *
105
     * @return \stdClass
106
     */
107
    public function asObject()
108
    {
109
        if ($response = json_decode($this->response_data)) {
110
            return $response;
111
        }
112
113
        return new \stdClass;
114
    }
115
116
    /**
117
     * httpStatus
118
     *
119
     * Returns the http_status code
120
     *
121
     * @return int
122
     */
123 1
    public function httpStatus()
124
    {
125 1
        return $this->status_code;
126
    }
127
128
    /**
129
     * isSuccess
130
     *
131
     * Checks if the http status code indicates a succesful or an error response.
132
     *
133
     * @return boolean
134
     */
135 2
    public function isSuccess()
136
    {
137 2
        if ($this->status_code > 299) {
138 1
            return false;
139
        }
140
141 1
        return true;
142
    }
143
}
144