-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathTraceResponse.php
186 lines (170 loc) · 4.06 KB
/
TraceResponse.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
<?php
/**
* ArangoDB PHP client: connection
*
* @package ArangoDBClient
* @author Jan Steemann
* @author Francis Chuang
* @copyright Copyright 2012, triagens GmbH, Cologne, Germany
*/
namespace ArangoDBClient;
/**
* Class TraceResponse
*
* @author Francis Chuang
* @package ArangoDBClient
* @since 1.3
*/
class TraceResponse
{
/**
* Stores each header as an array (key => value) element
*
* @var array
*/
private $_headers = [];
/**
* The http status code
*
* @var int
*/
private $_httpCode;
/**
* The raw body of the response
*
* @var string
*/
private $_body;
/**
* The type of http message
*
* @var string
*/
private $_type = 'response';
/**
* The time taken to send and receive a response in seconds
*
* @var float
*/
private $_timeTaken;
/**
* Used to look up the definition for an http code
*
* @var array
*/
private $_httpCodeDefinitions = [
100 => 'Continue',
101 => 'Switching Protocols',
200 => 'OK',
201 => 'Created',
202 => 'Accepted',
203 => 'Non-Authoritative Information',
204 => 'No Content',
205 => 'Reset Content',
206 => 'Partial Content',
300 => 'Multiple Choices',
301 => 'Moved Permanently',
302 => 'Found',
303 => 'See Other',
304 => 'Not Modified',
305 => 'Use Proxy',
307 => 'Temporary Redirect',
400 => 'Bad Request',
401 => 'Unauthorized',
402 => 'Payment Required',
403 => 'Forbidden',
404 => 'Not Found',
405 => 'Method Not Allowed',
406 => 'Not Acceptable',
407 => 'Proxy Authentication Required',
408 => 'Request Timeout',
409 => 'Conflict',
410 => 'Gone',
411 => 'Length Required',
412 => 'Precondition Failed',
413 => 'Request Entity Too Large',
414 => 'Request-URI Too Long',
415 => 'Unsupported Media Type',
416 => 'Requested Range Not Satisfiable',
417 => 'Expectation Failed',
418 => 'I\'m a teapot',
500 => 'Internal Server Error',
501 => 'Not Implemented',
502 => 'Bad Gateway',
503 => 'Service Unavailable',
504 => 'Gateway Timeout',
505 => 'HTTP Version Not Supported',
];
/**
* Set up the response trace
*
* @param array $headers - the array of http headers
* @param int $httpCode - the http code
* @param string $body - the string of http body
* @param $timeTaken
*/
public function __construct($headers, $httpCode, $body, $timeTaken)
{
$this->_headers = $headers;
$this->_httpCode = $httpCode;
$this->_body = $body;
$this->_timeTaken = $timeTaken;
}
/**
* Get an array of the response headers
*
* @return array
*/
public function getHeaders()
{
return $this->_headers;
}
/**
* Get the http response code
*
* @return int
*/
public function getHttpCode()
{
return $this->_httpCode;
}
/**
* Get the http code definition
*
* @throws ClientException
* @return string
*/
public function getHttpCodeDefinition()
{
if (!isset($this->_httpCodeDefinitions[$this->getHttpCode()])) {
throw new ClientException('Invalid http code provided.');
}
return $this->_httpCodeDefinitions[$this->getHttpCode()];
}
/**
* Get the response body
*
* @return string
*/
public function getBody()
{
return $this->_body;
}
/**
* Get the http message type
*
* @return string
*/
public function getType()
{
return $this->_type;
}
/**
* Get the time taken for this request
*/
public function getTimeTaken()
{
return $this->_timeTaken;
}
}
class_alias(TraceResponse::class, '\triagens\ArangoDb\TraceResponse');