]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - includes/libs/HttpStatus.php
MediaWiki 1.30.2-scripts2
[autoinstalls/mediawiki.git] / includes / libs / HttpStatus.php
1 <?php
2 /**
3  * List of HTTP status codes.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  * http://www.gnu.org/copyleft/gpl.html
19  *
20  * @file
21  */
22
23 /**
24  * @todo document
25  */
26 class HttpStatus {
27
28         /**
29          * Get the message associated with an HTTP response status code
30          *
31          * @param int $code Status code
32          * @return string|null Message, or null if $code is not known
33          */
34         public static function getMessage( $code ) {
35                 static $statusMessage = [
36                         100 => 'Continue',
37                         101 => 'Switching Protocols',
38                         102 => 'Processing',
39                         200 => 'OK',
40                         201 => 'Created',
41                         202 => 'Accepted',
42                         203 => 'Non-Authoritative Information',
43                         204 => 'No Content',
44                         205 => 'Reset Content',
45                         206 => 'Partial Content',
46                         207 => 'Multi-Status',
47                         300 => 'Multiple Choices',
48                         301 => 'Moved Permanently',
49                         302 => 'Found',
50                         303 => 'See Other',
51                         304 => 'Not Modified',
52                         305 => 'Use Proxy',
53                         307 => 'Temporary Redirect',
54                         400 => 'Bad Request',
55                         401 => 'Unauthorized',
56                         402 => 'Payment Required',
57                         403 => 'Forbidden',
58                         404 => 'Not Found',
59                         405 => 'Method Not Allowed',
60                         406 => 'Not Acceptable',
61                         407 => 'Proxy Authentication Required',
62                         408 => 'Request Timeout',
63                         409 => 'Conflict',
64                         410 => 'Gone',
65                         411 => 'Length Required',
66                         412 => 'Precondition Failed',
67                         413 => 'Request Entity Too Large',
68                         414 => 'Request-URI Too Large',
69                         415 => 'Unsupported Media Type',
70                         416 => 'Request Range Not Satisfiable',
71                         417 => 'Expectation Failed',
72                         422 => 'Unprocessable Entity',
73                         423 => 'Locked',
74                         424 => 'Failed Dependency',
75                         428 => 'Precondition Required',
76                         429 => 'Too Many Requests',
77                         431 => 'Request Header Fields Too Large',
78                         500 => 'Internal Server Error',
79                         501 => 'Not Implemented',
80                         502 => 'Bad Gateway',
81                         503 => 'Service Unavailable',
82                         504 => 'Gateway Timeout',
83                         505 => 'HTTP Version Not Supported',
84                         507 => 'Insufficient Storage',
85                         511 => 'Network Authentication Required',
86                 ];
87                 return isset( $statusMessage[$code] ) ? $statusMessage[$code] : null;
88         }
89
90         /**
91          * Output an HTTP status code header
92          *
93          * @since 1.26
94          * @param int $code Status code
95          */
96         public static function header( $code ) {
97                 static $version = null;
98                 $message = self::getMessage( $code );
99                 if ( $message === null ) {
100                         trigger_error( "Unknown HTTP status code $code", E_USER_WARNING );
101                         return;
102                 }
103
104                 MediaWiki\HeaderCallback::warnIfHeadersSent();
105                 if ( $version === null ) {
106                         $version = isset( $_SERVER['SERVER_PROTOCOL'] ) &&
107                                 $_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.0' ?
108                                         '1.0' :
109                                         '1.1';
110                 }
111
112                 header( "HTTP/$version $code $message" );
113         }
114
115 }