Mercurial > hg > isophonics-drupal-site
comparison vendor/guzzlehttp/psr7/src/Response.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 namespace GuzzleHttp\Psr7; | |
3 | |
4 use Psr\Http\Message\ResponseInterface; | |
5 use Psr\Http\Message\StreamInterface; | |
6 | |
7 /** | |
8 * PSR-7 response implementation. | |
9 */ | |
10 class Response implements ResponseInterface | |
11 { | |
12 use MessageTrait; | |
13 | |
14 /** @var array Map of standard HTTP status code/reason phrases */ | |
15 private static $phrases = [ | |
16 100 => 'Continue', | |
17 101 => 'Switching Protocols', | |
18 102 => 'Processing', | |
19 200 => 'OK', | |
20 201 => 'Created', | |
21 202 => 'Accepted', | |
22 203 => 'Non-Authoritative Information', | |
23 204 => 'No Content', | |
24 205 => 'Reset Content', | |
25 206 => 'Partial Content', | |
26 207 => 'Multi-status', | |
27 208 => 'Already Reported', | |
28 300 => 'Multiple Choices', | |
29 301 => 'Moved Permanently', | |
30 302 => 'Found', | |
31 303 => 'See Other', | |
32 304 => 'Not Modified', | |
33 305 => 'Use Proxy', | |
34 306 => 'Switch Proxy', | |
35 307 => 'Temporary Redirect', | |
36 400 => 'Bad Request', | |
37 401 => 'Unauthorized', | |
38 402 => 'Payment Required', | |
39 403 => 'Forbidden', | |
40 404 => 'Not Found', | |
41 405 => 'Method Not Allowed', | |
42 406 => 'Not Acceptable', | |
43 407 => 'Proxy Authentication Required', | |
44 408 => 'Request Time-out', | |
45 409 => 'Conflict', | |
46 410 => 'Gone', | |
47 411 => 'Length Required', | |
48 412 => 'Precondition Failed', | |
49 413 => 'Request Entity Too Large', | |
50 414 => 'Request-URI Too Large', | |
51 415 => 'Unsupported Media Type', | |
52 416 => 'Requested range not satisfiable', | |
53 417 => 'Expectation Failed', | |
54 418 => 'I\'m a teapot', | |
55 422 => 'Unprocessable Entity', | |
56 423 => 'Locked', | |
57 424 => 'Failed Dependency', | |
58 425 => 'Unordered Collection', | |
59 426 => 'Upgrade Required', | |
60 428 => 'Precondition Required', | |
61 429 => 'Too Many Requests', | |
62 431 => 'Request Header Fields Too Large', | |
63 451 => 'Unavailable For Legal Reasons', | |
64 500 => 'Internal Server Error', | |
65 501 => 'Not Implemented', | |
66 502 => 'Bad Gateway', | |
67 503 => 'Service Unavailable', | |
68 504 => 'Gateway Time-out', | |
69 505 => 'HTTP Version not supported', | |
70 506 => 'Variant Also Negotiates', | |
71 507 => 'Insufficient Storage', | |
72 508 => 'Loop Detected', | |
73 511 => 'Network Authentication Required', | |
74 ]; | |
75 | |
76 /** @var string */ | |
77 private $reasonPhrase = ''; | |
78 | |
79 /** @var int */ | |
80 private $statusCode = 200; | |
81 | |
82 /** | |
83 * @param int $status Status code | |
84 * @param array $headers Response headers | |
85 * @param string|null|resource|StreamInterface $body Response body | |
86 * @param string $version Protocol version | |
87 * @param string|null $reason Reason phrase (when empty a default will be used based on the status code) | |
88 */ | |
89 public function __construct( | |
90 $status = 200, | |
91 array $headers = [], | |
92 $body = null, | |
93 $version = '1.1', | |
94 $reason = null | |
95 ) { | |
96 $this->statusCode = (int) $status; | |
97 | |
98 if ($body !== '' && $body !== null) { | |
99 $this->stream = stream_for($body); | |
100 } | |
101 | |
102 $this->setHeaders($headers); | |
103 if ($reason == '' && isset(self::$phrases[$this->statusCode])) { | |
104 $this->reasonPhrase = self::$phrases[$this->statusCode]; | |
105 } else { | |
106 $this->reasonPhrase = (string) $reason; | |
107 } | |
108 | |
109 $this->protocol = $version; | |
110 } | |
111 | |
112 public function getStatusCode() | |
113 { | |
114 return $this->statusCode; | |
115 } | |
116 | |
117 public function getReasonPhrase() | |
118 { | |
119 return $this->reasonPhrase; | |
120 } | |
121 | |
122 public function withStatus($code, $reasonPhrase = '') | |
123 { | |
124 $new = clone $this; | |
125 $new->statusCode = (int) $code; | |
126 if ($reasonPhrase == '' && isset(self::$phrases[$new->statusCode])) { | |
127 $reasonPhrase = self::$phrases[$new->statusCode]; | |
128 } | |
129 $new->reasonPhrase = $reasonPhrase; | |
130 return $new; | |
131 } | |
132 } |