diff --git a/CHANGELOG.md b/CHANGELOG.md index 411e1ed..bb8fe14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - `PluginClientFactory` to create `PluginClient` instances. - Added new option 'delay' for `RetryPlugin`. - Added new option 'decider' for `RetryPlugin`. +- Supports more cookie date formats in the Cookie Plugin ### Changed diff --git a/composer.json b/composer.json index 35db76d..27ce7f1 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "php": ">=5.4", "php-http/httplug": "^1.1", "php-http/message-factory": "^1.0", - "php-http/message": "^1.2", + "php-http/message": "^1.6", "symfony/options-resolver": "^2.6 || ^3.0" }, "require-dev": { diff --git a/src/Plugin/CookiePlugin.php b/src/Plugin/CookiePlugin.php index 7da9abf..c6cd36f 100644 --- a/src/Plugin/CookiePlugin.php +++ b/src/Plugin/CookiePlugin.php @@ -6,6 +6,8 @@ use Http\Client\Exception\TransferException; use Http\Message\Cookie; use Http\Message\CookieJar; +use Http\Message\CookieUtil; +use Http\Message\Exception\UnexpectedValueException; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; @@ -114,15 +116,17 @@ private function createCookie(RequestInterface $request, $setCookie) switch (strtolower($key)) { case 'expires': - $expires = \DateTime::createFromFormat(\DateTime::COOKIE, $value); - - if (true !== ($expires instanceof \DateTime)) { + try { + $expires = CookieUtil::parseDate($value); + } catch (UnexpectedValueException $e) { throw new TransferException( sprintf( 'Cookie header `%s` expires value `%s` could not be converted to date', $name, $value - ) + ), + null, + $e ); }