From 8d52cf3d128f4a1d9810fc8ede4cb6ce2e38e84b Mon Sep 17 00:00:00 2001 From: Umherirrender Date: Fri, 15 Feb 2019 20:11:49 +0100 Subject: [PATCH] Move FauxResponse class to own file Similar to FauxRequest Change-Id: Ia9e4e7287ade605899d935db7c9f1f017e0bcb85 --- .phpcs.xml | 1 - autoload.php | 2 +- includes/FauxResponse.php | 150 ++++++++++++++++++++++++++++++++++++++ includes/WebResponse.php | 129 -------------------------------- 4 files changed, 151 insertions(+), 131 deletions(-) create mode 100644 includes/FauxResponse.php diff --git a/.phpcs.xml b/.phpcs.xml index 99afa3bfd4..a091fcc4d0 100644 --- a/.phpcs.xml +++ b/.phpcs.xml @@ -250,7 +250,6 @@ */includes/StubObject\.php */includes/upload/UploadStash\.php */includes/utils/AutoloadGenerator\.php - */includes/WebResponse\.php */maintenance/dumpIterator\.php */maintenance/Maintenance\.php */maintenance/findDeprecated\.php diff --git a/autoload.php b/autoload.php index aaf6f51c33..3bf4582201 100644 --- a/autoload.php +++ b/autoload.php @@ -498,7 +498,7 @@ $wgAutoloadLocalClasses = [ 'FakeResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php', 'FatalError' => __DIR__ . '/includes/exception/FatalError.php', 'FauxRequest' => __DIR__ . '/includes/FauxRequest.php', - 'FauxResponse' => __DIR__ . '/includes/WebResponse.php', + 'FauxResponse' => __DIR__ . '/includes/FauxResponse.php', 'FeedItem' => __DIR__ . '/includes/Feed.php', 'FeedUtils' => __DIR__ . '/includes/FeedUtils.php', 'FetchText' => __DIR__ . '/maintenance/fetchText.php', diff --git a/includes/FauxResponse.php b/includes/FauxResponse.php new file mode 100644 index 0000000000..24c396ec63 --- /dev/null +++ b/includes/FauxResponse.php @@ -0,0 +1,150 @@ +code = intval( $parts[1] ); + } else { + list( $key, $val ) = array_map( 'trim', explode( ":", $string, 2 ) ); + + $key = strtoupper( $key ); + + if ( $replace || !isset( $this->headers[$key] ) ) { + $this->headers[$key] = $val; + } + } + + if ( $http_response_code !== null ) { + $this->code = intval( $http_response_code ); + } + } + + /** + * @since 1.26 + * @param int $code Status code + */ + public function statusHeader( $code ) { + $this->code = intval( $code ); + } + + public function headersSent() { + return false; + } + + /** + * @param string $key The name of the header to get (case insensitive). + * @return string|null The header value (if set); null otherwise. + */ + public function getHeader( $key ) { + $key = strtoupper( $key ); + + return $this->headers[$key] ?? null; + } + + /** + * Get the HTTP response code, null if not set + * + * @return int|null + */ + public function getStatusCode() { + return $this->code; + } + + /** + * @param string $name The name of the cookie. + * @param string $value The value to be stored in the cookie. + * @param int|null $expire Ignored in this faux subclass. + * @param array $options Ignored in this faux subclass. + */ + public function setCookie( $name, $value, $expire = 0, $options = [] ) { + global $wgCookiePath, $wgCookiePrefix, $wgCookieDomain; + global $wgCookieSecure, $wgCookieExpiration, $wgCookieHttpOnly; + + $options = array_filter( $options, function ( $a ) { + return $a !== null; + } ) + [ + 'prefix' => $wgCookiePrefix, + 'domain' => $wgCookieDomain, + 'path' => $wgCookiePath, + 'secure' => $wgCookieSecure, + 'httpOnly' => $wgCookieHttpOnly, + 'raw' => false, + ]; + + if ( $expire === null ) { + $expire = 0; // Session cookie + } elseif ( $expire == 0 && $wgCookieExpiration != 0 ) { + $expire = time() + $wgCookieExpiration; + } + + $this->cookies[$options['prefix'] . $name] = [ + 'value' => (string)$value, + 'expire' => (int)$expire, + 'path' => (string)$options['path'], + 'domain' => (string)$options['domain'], + 'secure' => (bool)$options['secure'], + 'httpOnly' => (bool)$options['httpOnly'], + 'raw' => (bool)$options['raw'], + ]; + } + + /** + * @param string $name + * @return string|null + */ + public function getCookie( $name ) { + if ( isset( $this->cookies[$name] ) ) { + return $this->cookies[$name]['value']; + } + return null; + } + + /** + * @param string $name + * @return array|null + */ + public function getCookieData( $name ) { + return $this->cookies[$name] ?? null; + } + + /** + * @return array + */ + public function getCookies() { + return $this->cookies; + } +} diff --git a/includes/WebResponse.php b/includes/WebResponse.php index 3a4faf0faa..9396a41a76 100644 --- a/includes/WebResponse.php +++ b/includes/WebResponse.php @@ -235,132 +235,3 @@ class WebResponse { return (bool)self::$setCookies; } } - -/** - * @ingroup HTTP - */ -class FauxResponse extends WebResponse { - private $headers; - private $cookies = []; - private $code; - - /** - * Stores a HTTP header - * @param string $string Header to output - * @param bool $replace Replace current similar header - * @param null|int $http_response_code Forces the HTTP response code to the specified value. - */ - public function header( $string, $replace = true, $http_response_code = null ) { - if ( substr( $string, 0, 5 ) == 'HTTP/' ) { - $parts = explode( ' ', $string, 3 ); - $this->code = intval( $parts[1] ); - } else { - list( $key, $val ) = array_map( 'trim', explode( ":", $string, 2 ) ); - - $key = strtoupper( $key ); - - if ( $replace || !isset( $this->headers[$key] ) ) { - $this->headers[$key] = $val; - } - } - - if ( $http_response_code !== null ) { - $this->code = intval( $http_response_code ); - } - } - - /** - * @since 1.26 - * @param int $code Status code - */ - public function statusHeader( $code ) { - $this->code = intval( $code ); - } - - public function headersSent() { - return false; - } - - /** - * @param string $key The name of the header to get (case insensitive). - * @return string|null The header value (if set); null otherwise. - */ - public function getHeader( $key ) { - $key = strtoupper( $key ); - - return $this->headers[$key] ?? null; - } - - /** - * Get the HTTP response code, null if not set - * - * @return int|null - */ - public function getStatusCode() { - return $this->code; - } - - /** - * @param string $name The name of the cookie. - * @param string $value The value to be stored in the cookie. - * @param int|null $expire Ignored in this faux subclass. - * @param array $options Ignored in this faux subclass. - */ - public function setCookie( $name, $value, $expire = 0, $options = [] ) { - global $wgCookiePath, $wgCookiePrefix, $wgCookieDomain; - global $wgCookieSecure, $wgCookieExpiration, $wgCookieHttpOnly; - - $options = array_filter( $options, function ( $a ) { - return $a !== null; - } ) + [ - 'prefix' => $wgCookiePrefix, - 'domain' => $wgCookieDomain, - 'path' => $wgCookiePath, - 'secure' => $wgCookieSecure, - 'httpOnly' => $wgCookieHttpOnly, - 'raw' => false, - ]; - - if ( $expire === null ) { - $expire = 0; // Session cookie - } elseif ( $expire == 0 && $wgCookieExpiration != 0 ) { - $expire = time() + $wgCookieExpiration; - } - - $this->cookies[$options['prefix'] . $name] = [ - 'value' => (string)$value, - 'expire' => (int)$expire, - 'path' => (string)$options['path'], - 'domain' => (string)$options['domain'], - 'secure' => (bool)$options['secure'], - 'httpOnly' => (bool)$options['httpOnly'], - 'raw' => (bool)$options['raw'], - ]; - } - - /** - * @param string $name - * @return string|null - */ - public function getCookie( $name ) { - if ( isset( $this->cookies[$name] ) ) { - return $this->cookies[$name]['value']; - } - return null; - } - - /** - * @param string $name - * @return array|null - */ - public function getCookieData( $name ) { - return $this->cookies[$name] ?? null; - } - - /** - * @return array - */ - public function getCookies() { - return $this->cookies; - } -} -- 2.20.1