From a2d41b8d6fdfc4957736f7ecb2311f80451abc09 Mon Sep 17 00:00:00 2001 From: Antoine Musso Date: Mon, 4 Jul 2011 21:01:19 +0000 Subject: [PATCH] HTTP status messages move: OutputPage -> HttpStatus OutputPage::getStatusMessage() is a method to convert a numeric HTTP status code to an english message. It does not really belong to the OutputPage were it was for historical reason. This patch move the basic function to a non MediaWiki dependant class in our directory includes/libs. We could potentially enhances it, but I do not see any use cases for us yet. I have renamed the method to the shorter 'getMessage' since the word 'status' is now in the class name. Summary of changes: * OutputPage::getStatusMessage becomes HttpStatus::getMessage * Method moved to the new includes/libs/HttpStatus.php * Autoloader updated * History kept by using 'svn copy' * No functional changes * No input/output format changes * Old occurences modified in phase3 * OutputPage::getStatusMessages() marked as deprecated PHPUnit test suite is fine. Tested manually using a redirection --- includes/AutoLoader.php | 1 + includes/OutputPage.php | 57 +++----------------- includes/libs/HttpStatus.php | 68 ++++++++++++++++++++++++ includes/specials/SpecialUploadStash.php | 2 +- 4 files changed, 76 insertions(+), 52 deletions(-) create mode 100644 includes/libs/HttpStatus.php diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 69f61256be..039b7d87c1 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -524,6 +524,7 @@ $wgAutoloadLocalClasses = array( # includes/libs 'CSSJanus' => 'includes/libs/CSSJanus.php', 'CSSMin' => 'includes/libs/CSSMin.php', + 'HttpStatus' => 'includes/libs/HttpStatus.php', 'IEContentAnalyzer' => 'includes/libs/IEContentAnalyzer.php', 'IEUrlExtension' => 'includes/libs/IEUrlExtension.php', 'JavaScriptMinifier' => 'includes/libs/JavaScriptMinifier.php', diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 36b17aba86..e43c214957 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -1803,58 +1803,13 @@ class OutputPage { * * @param $code Integer: status code * @return String or null: message or null if $code is not in the list of - * messages + * messages + * + * @deprecated since 1.19 Use HttpStatus::getMessage() instead. */ public static function getStatusMessage( $code ) { - static $statusMessage = array( - 100 => 'Continue', - 101 => 'Switching Protocols', - 102 => 'Processing', - 200 => 'OK', - 201 => 'Created', - 202 => 'Accepted', - 203 => 'Non-Authoritative Information', - 204 => 'No Content', - 205 => 'Reset Content', - 206 => 'Partial Content', - 207 => 'Multi-Status', - 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 Large', - 415 => 'Unsupported Media Type', - 416 => 'Request Range Not Satisfiable', - 417 => 'Expectation Failed', - 422 => 'Unprocessable Entity', - 423 => 'Locked', - 424 => 'Failed Dependency', - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', - 504 => 'Gateway Timeout', - 505 => 'HTTP Version Not Supported', - 507 => 'Insufficient Storage' - ); - return isset( $statusMessage[$code] ) ? $statusMessage[$code] : null; + wfDeprecated( __METHOD__ ); + return HttpStatus::getMessage( $code ); } /** @@ -1877,7 +1832,7 @@ class OutputPage { $this->mRedirect = wfExpandUrl( $this->mRedirect ); if( $this->mRedirectCode == '301' || $this->mRedirectCode == '303' ) { if( !$wgDebugRedirects ) { - $message = self::getStatusMessage( $this->mRedirectCode ); + $message = HttpStatus::getMessage( $this->mRedirectCode ); $response->header( "HTTP/1.1 {$this->mRedirectCode} $message" ); } $this->mLastModified = wfTimestamp( TS_RFC2822 ); diff --git a/includes/libs/HttpStatus.php b/includes/libs/HttpStatus.php new file mode 100644 index 0000000000..2985c652c6 --- /dev/null +++ b/includes/libs/HttpStatus.php @@ -0,0 +1,68 @@ + 'Continue', + 101 => 'Switching Protocols', + 102 => 'Processing', + 200 => 'OK', + 201 => 'Created', + 202 => 'Accepted', + 203 => 'Non-Authoritative Information', + 204 => 'No Content', + 205 => 'Reset Content', + 206 => 'Partial Content', + 207 => 'Multi-Status', + 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 Large', + 415 => 'Unsupported Media Type', + 416 => 'Request Range Not Satisfiable', + 417 => 'Expectation Failed', + 422 => 'Unprocessable Entity', + 423 => 'Locked', + 424 => 'Failed Dependency', + 500 => 'Internal Server Error', + 501 => 'Not Implemented', + 502 => 'Bad Gateway', + 503 => 'Service Unavailable', + 504 => 'Gateway Timeout', + 505 => 'HTTP Version Not Supported', + 507 => 'Insufficient Storage' + ); + return isset( $statusMessage[$code] ) ? $statusMessage[$code] : null; + } + +} diff --git a/includes/specials/SpecialUploadStash.php b/includes/specials/SpecialUploadStash.php index de0057fb14..59541c1ed9 100644 --- a/includes/specials/SpecialUploadStash.php +++ b/includes/specials/SpecialUploadStash.php @@ -97,7 +97,7 @@ class SpecialUploadStash extends UnlistedSpecialPage { $message = $e->getMessage(); } - wfHttpError( $code, OutputPage::getStatusMessage( $code ), $message ); + wfHttpError( $code, HttpStatus::getMessage( $code ), $message ); return false; } -- 2.20.1