From: addshore Date: Sun, 3 Apr 2016 08:46:36 +0000 (+0300) Subject: Move CookieJar class to own file X-Git-Tag: 1.31.0-rc.0~7386^2 X-Git-Url: http://git.heureux-cyclage.org/?a=commitdiff_plain;h=7a62e41f09859b441a4b43d0dff5b3e6cd77d314;p=lhc%2Fweb%2Fwiklou.git Move CookieJar class to own file Change-Id: Ie98eadb2a8015f1290447b79cc095799abaeba4f --- diff --git a/autoload.php b/autoload.php index fd4f873d41..f98bac3cce 100644 --- a/autoload.php +++ b/autoload.php @@ -269,7 +269,7 @@ $wgAutoloadLocalClasses = [ 'ConvertUserOptions' => __DIR__ . '/maintenance/convertUserOptions.php', 'ConverterRule' => __DIR__ . '/languages/ConverterRule.php', 'Cookie' => __DIR__ . '/includes/libs/Cookie.php', - 'CookieJar' => __DIR__ . '/includes/libs/Cookie.php', + 'CookieJar' => __DIR__ . '/includes/libs/CookieJar.php', 'CopyFileBackend' => __DIR__ . '/maintenance/copyFileBackend.php', 'CopyFileOp' => __DIR__ . '/includes/filebackend/FileOp.php', 'CopyJobQueue' => __DIR__ . '/maintenance/copyJobQueue.php', diff --git a/includes/libs/Cookie.php b/includes/libs/Cookie.php index cc236e289c..a67b919f47 100644 --- a/includes/libs/Cookie.php +++ b/includes/libs/Cookie.php @@ -206,86 +206,3 @@ class Cookie { return $this->isSessionKey || $this->expires > time(); } } - -class CookieJar { - private $cookie = []; - - /** - * Set a cookie in the cookie jar. Make sure only one cookie per-name exists. - * @see Cookie::set() - * @param string $name - * @param string $value - * @param array $attr - */ - public function setCookie( $name, $value, $attr ) { - /* cookies: case insensitive, so this should work. - * We'll still send the cookies back in the same case we got them, though. - */ - $index = strtoupper( $name ); - - if ( isset( $this->cookie[$index] ) ) { - $this->cookie[$index]->set( $value, $attr ); - } else { - $this->cookie[$index] = new Cookie( $name, $value, $attr ); - } - } - - /** - * @see Cookie::serializeToHttpRequest - * @param string $path - * @param string $domain - * @return string - */ - public function serializeToHttpRequest( $path, $domain ) { - $cookies = []; - - foreach ( $this->cookie as $c ) { - $serialized = $c->serializeToHttpRequest( $path, $domain ); - - if ( $serialized ) { - $cookies[] = $serialized; - } - } - - return implode( '; ', $cookies ); - } - - /** - * Parse the content of an Set-Cookie HTTP Response header. - * - * @param string $cookie - * @param string $domain Cookie's domain - * @return null - */ - public function parseCookieResponseHeader( $cookie, $domain ) { - $len = strlen( 'Set-Cookie:' ); - - if ( substr_compare( 'Set-Cookie:', $cookie, 0, $len, true ) === 0 ) { - $cookie = substr( $cookie, $len ); - } - - $bit = array_map( 'trim', explode( ';', $cookie ) ); - - if ( count( $bit ) >= 1 ) { - list( $name, $value ) = explode( '=', array_shift( $bit ), 2 ); - $attr = []; - - foreach ( $bit as $piece ) { - $parts = explode( '=', $piece ); - if ( count( $parts ) > 1 ) { - $attr[strtolower( $parts[0] )] = $parts[1]; - } else { - $attr[strtolower( $parts[0] )] = true; - } - } - - if ( !isset( $attr['domain'] ) ) { - $attr['domain'] = $domain; - } elseif ( !Cookie::validateCookieDomain( $attr['domain'], $domain ) ) { - return null; - } - - $this->setCookie( $name, $value, $attr ); - } - } -} diff --git a/includes/libs/CookieJar.php b/includes/libs/CookieJar.php new file mode 100644 index 0000000000..910a7ca82d --- /dev/null +++ b/includes/libs/CookieJar.php @@ -0,0 +1,103 @@ +cookie[$index] ) ) { + $this->cookie[$index]->set( $value, $attr ); + } else { + $this->cookie[$index] = new Cookie( $name, $value, $attr ); + } + } + + /** + * @see Cookie::serializeToHttpRequest + * @param string $path + * @param string $domain + * @return string + */ + public function serializeToHttpRequest( $path, $domain ) { + $cookies = []; + + foreach ( $this->cookie as $c ) { + $serialized = $c->serializeToHttpRequest( $path, $domain ); + + if ( $serialized ) { + $cookies[] = $serialized; + } + } + + return implode( '; ', $cookies ); + } + + /** + * Parse the content of an Set-Cookie HTTP Response header. + * + * @param string $cookie + * @param string $domain Cookie's domain + * @return null + */ + public function parseCookieResponseHeader( $cookie, $domain ) { + $len = strlen( 'Set-Cookie:' ); + + if ( substr_compare( 'Set-Cookie:', $cookie, 0, $len, true ) === 0 ) { + $cookie = substr( $cookie, $len ); + } + + $bit = array_map( 'trim', explode( ';', $cookie ) ); + + if ( count( $bit ) >= 1 ) { + list( $name, $value ) = explode( '=', array_shift( $bit ), 2 ); + $attr = []; + + foreach ( $bit as $piece ) { + $parts = explode( '=', $piece ); + if ( count( $parts ) > 1 ) { + $attr[strtolower( $parts[0] )] = $parts[1]; + } else { + $attr[strtolower( $parts[0] )] = true; + } + } + + if ( !isset( $attr['domain'] ) ) { + $attr['domain'] = $domain; + } elseif ( !Cookie::validateCookieDomain( $attr['domain'], $domain ) ) { + return null; + } + + $this->setCookie( $name, $value, $attr ); + } + } +}