HTTP status messages move: OutputPage -> HttpStatus
authorAntoine Musso <hashar@users.mediawiki.org>
Mon, 4 Jul 2011 21:01:19 +0000 (21:01 +0000)
committerAntoine Musso <hashar@users.mediawiki.org>
Mon, 4 Jul 2011 21:01:19 +0000 (21:01 +0000)
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
includes/OutputPage.php
includes/libs/HttpStatus.php [new file with mode: 0644]
includes/specials/SpecialUploadStash.php

index 69f6125..039b7d8 100644 (file)
@@ -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',
index 36b17ab..e43c214 100644 (file)
@@ -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 (file)
index 0000000..2985c65
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+/**
+ * @todo document
+ */
+class HttpStatus {
+
+       /**
+        * Get the message associed with the HTTP response code $code
+        *
+        * Replace OutputPage::getStatusMessage( $code )
+        *
+        * @param $code Integer: status code
+        * @return String or null: message or null if $code is not in the list of
+        *         messages
+        */
+       public static function getMessage( $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;
+       }
+
+}
index de0057f..59541c1 100644 (file)
@@ -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;
        }