|
1
|
|
|
<?php |
|
2
|
|
|
/** |
|
3
|
|
|
* This file is part of the bee4/transport package. |
|
4
|
|
|
* For the full copyright and license information, please view the LICENSE |
|
5
|
|
|
* file that was distributed with this source code. |
|
6
|
|
|
* |
|
7
|
|
|
* @copyright Bee4 2015 |
|
8
|
|
|
* @author Stephane HULARD <[email protected]> |
|
9
|
|
|
* @package Bee4\Transport\Message\Request\Http |
|
10
|
|
|
*/ |
|
11
|
|
|
|
|
12
|
|
|
namespace Bee4\Transport\Message\Request\Http; |
|
13
|
|
|
|
|
14
|
|
|
use Bee4\Transport\Message\Request\AbstractRequest; |
|
15
|
|
|
|
|
16
|
|
|
class HttpRequest extends AbstractRequest |
|
17
|
|
|
{ |
|
18
|
|
|
//1XX - Informational |
|
19
|
|
|
const STATUS_100 = "100 Continue"; |
|
20
|
|
|
const STATUS_101 = "101 Switching Protocols"; |
|
21
|
|
|
const STATUS_102 = "102 Processing (WebDAV; RFC 2518)"; |
|
22
|
|
|
//2XX - Success |
|
23
|
|
|
const STATUS_200 = "200 OK"; |
|
24
|
|
|
const STATUS_201 = "201 Created"; |
|
25
|
|
|
const STATUS_202 = "202 Accepted"; |
|
26
|
|
|
const STATUS_203 = "203 Non-Authoritative Information (since HTTP/1.1)"; |
|
27
|
|
|
const STATUS_204 = "204 No Content"; |
|
28
|
|
|
const STATUS_205 = "205 Reset Content"; |
|
29
|
|
|
const STATUS_206 = "206 Partial Content"; |
|
30
|
|
|
const STATUS_207 = "207 Multi-Status (WebDAV; RFC 4918)"; |
|
31
|
|
|
const STATUS_208 = "208 Already Reported (WebDAV; RFC 5842)"; |
|
32
|
|
|
const STATUS_226 = "226 IM Used (RFC 3229)"; |
|
33
|
|
|
//3XX - Redirection |
|
34
|
|
|
const STATUS_300 = "300 Multiple Choices"; |
|
35
|
|
|
const STATUS_301 = "301 Moved Permanently"; |
|
36
|
|
|
const STATUS_302 = "302 Found"; |
|
37
|
|
|
const STATUS_303 = "303 See Other (since HTTP/1.1)"; |
|
38
|
|
|
const STATUS_304 = "304 Not Modified"; |
|
39
|
|
|
const STATUS_305 = "305 Use Proxy (since HTTP/1.1)"; |
|
40
|
|
|
const STATUS_306 = "306 Switch Proxy"; |
|
41
|
|
|
const STATUS_307 = "307 Temporary Redirect (since HTTP/1.1)"; |
|
42
|
|
|
const STATUS_308 = "308 Permanent Redirect (Experimental RFC; RFC 7238)"; |
|
43
|
|
|
//4XX - Client error |
|
44
|
|
|
const STATUS_400 = "400 Bad Request"; |
|
45
|
|
|
const STATUS_401 = "401 Unauthorized"; |
|
46
|
|
|
const STATUS_402 = "402 Payment Required"; |
|
47
|
|
|
const STATUS_403 = "403 Forbidden"; |
|
48
|
|
|
const STATUS_404 = "404 Not Found"; |
|
49
|
|
|
const STATUS_405 = "405 Method Not Allowed"; |
|
50
|
|
|
const STATUS_406 = "406 Not Acceptable"; |
|
51
|
|
|
const STATUS_407 = "407 Proxy Authentication Required"; |
|
52
|
|
|
const STATUS_408 = "408 Request Timeout"; |
|
53
|
|
|
const STATUS_409 = "409 Conflict"; |
|
54
|
|
|
const STATUS_410 = "410 Gone"; |
|
55
|
|
|
const STATUS_411 = "411 Length Required"; |
|
56
|
|
|
const STATUS_412 = "412 Precondition Failed"; |
|
57
|
|
|
const STATUS_413 = "413 Request Entity Too Large"; |
|
58
|
|
|
const STATUS_414 = "414 Request-URI Too Long"; |
|
59
|
|
|
const STATUS_415 = "415 Unsupported Media Type"; |
|
60
|
|
|
const STATUS_416 = "416 Requested Range Not Satisfiable"; |
|
61
|
|
|
const STATUS_417 = "417 Expectation Failed"; |
|
62
|
|
|
const STATUS_418 = "418 I'm a teapot (RFC 2324)"; |
|
63
|
|
|
const STATUS_422 = "422 Unprocessable Entity (WebDAV; RFC 4918)"; |
|
64
|
|
|
const STATUS_423 = "423 Locked (WebDAV; RFC 4918)"; |
|
65
|
|
|
const STATUS_424 = "424 Failed Dependency (WebDAV; RFC 4918)"; |
|
66
|
|
|
const STATUS_426 = "426 Upgrade Required"; |
|
67
|
|
|
const STATUS_428 = "428 Precondition Required (RFC 6585)"; |
|
68
|
|
|
const STATUS_429 = "429 Too Many Requests (RFC 6585)"; |
|
69
|
|
|
const STATUS_431 = "431 Request Header Fields Too Large (RFC 6585)"; |
|
70
|
|
|
const STATUS_440 = "440 Login Timeout (Microsoft)"; |
|
71
|
|
|
const STATUS_444 = "444 No Response (Nginx)"; |
|
72
|
|
|
const STATUS_449 = "449 Retry With (Microsoft)"; |
|
73
|
|
|
const STATUS_450 = "450 Blocked by Windows Parental Controls (Microsoft)"; |
|
74
|
|
|
const STATUS_451 = "Unavailable For Legal Reasons (Internet draft)"; |
|
75
|
|
|
const STATUS_494 = "494 Request Header Too Large (Nginx)"; |
|
76
|
|
|
const STATUS_495 = "495 Cert Error (Nginx)"; |
|
77
|
|
|
const STATUS_496 = "496 No Cert (Nginx)"; |
|
78
|
|
|
const STATUS_497 = "497 HTTP to HTTPS (Nginx)"; |
|
79
|
|
|
const STATUS_498 = "498 Token expired/invalid (Esri)"; |
|
80
|
|
|
const STATUS_499 = "499 Client Closed Request (Nginx)"; |
|
81
|
|
|
//5XX - Server Error |
|
82
|
|
|
const STATUS_500 = "500 Internal Server Error"; |
|
83
|
|
|
const STATUS_501 = "501 Not Implemented"; |
|
84
|
|
|
const STATUS_502 = "502 Bad Gateway"; |
|
85
|
|
|
const STATUS_503 = "503 Service Unavailable"; |
|
86
|
|
|
const STATUS_504 = "504 Gateway Timeout"; |
|
87
|
|
|
const STATUS_505 = "505 HTTP Version Not Supported"; |
|
88
|
|
|
const STATUS_506 = "506 Variant Also Negotiates (RFC 2295)"; |
|
89
|
|
|
const STATUS_507 = "507 Insufficient Storage (WebDAV; RFC 4918)"; |
|
90
|
|
|
const STATUS_508 = "508 Loop Detected (WebDAV; RFC 5842)"; |
|
91
|
|
|
const STATUS_509 = "509 Bandwidth Limit Exceeded (Apache bw/limited extension)"; |
|
92
|
|
|
const STATUS_510 = "510 Not Extended (RFC 2774)"; |
|
93
|
|
|
const STATUS_511 = "511 Network Authentication Required (RFC 6585)"; |
|
94
|
|
|
|
|
95
|
|
|
/** |
|
96
|
|
|
* Send the request and prepend some headers |
|
97
|
|
|
* @return \Bee4\Transport\Message\Response |
|
98
|
|
|
*/ |
|
99
|
9 |
|
public function send() |
|
100
|
|
|
{ |
|
101
|
9 |
|
$this->addOption(CURLOPT_HTTPHEADER, $this->getHeaderLines()); |
|
102
|
9 |
|
$this->addOption(CURLOPT_USERAGENT, $this->getUserAgent()); |
|
103
|
|
|
|
|
104
|
9 |
|
return parent::send(); |
|
105
|
|
|
} |
|
106
|
|
|
|
|
107
|
|
|
/** |
|
108
|
|
|
* Prepare the request execution by adding specific cURL parameters |
|
109
|
|
|
*/ |
|
110
|
|
|
protected function prepare() |
|
111
|
|
|
{ |
|
112
|
|
|
} |
|
113
|
|
|
} |
|
114
|
|
|
|