Skip to content

Commit

Permalink
Use undeprecated methods for adding cookies.
Browse files Browse the repository at this point in the history
Also fix issue where a request with cookie headers would have the header
value dropped when the request was sent.
  • Loading branch information
markstory committed Mar 30, 2017
1 parent edd7109 commit 5034140
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 6 deletions.
1 change: 1 addition & 0 deletions src/Http/Client.php
Expand Up @@ -440,6 +440,7 @@ protected function _createRequest($method, $url, $data, $options)
}

$request = new Request($url, $method, $headers, $data);
$request = $this->_cookies->addToRequest($request);
$request->cookie($this->_cookies->get($url));
if (isset($options['cookies'])) {
$request->cookie($options['cookies']);
Expand Down
10 changes: 7 additions & 3 deletions src/Http/Client/Adapter/Stream.php
Expand Up @@ -147,15 +147,19 @@ protected function _buildHeaders(Request $request, $options)
{
$headers = [];
foreach ($request->getHeaders() as $name => $values) {
$headers[] = sprintf('%s: %s', $name, implode(", ", $values));
if ($name !== 'Cookie') {
$headers[] = sprintf('%s: %s', $name, implode(", ", $values));
}
}

$cookieHeader = $request->getHeaderLine('Cookie');
$cookies = [];
foreach ($request->cookies() as $name => $value) {
$cookies[] = "$name=$value";
}
if ($cookies) {
$headers[] = 'Cookie: ' . implode('; ', $cookies);
$cookieData = implode('; ', $cookies);
if ($cookieData || $cookieHeader) {
$headers[] = 'Cookie: ' . implode('; ', [$cookieHeader, $cookieData]);
}
$this->_contextOptions['header'] = implode("\r\n", $headers);
}
Expand Down
5 changes: 3 additions & 2 deletions tests/TestCase/Http/Client/Adapter/StreamTest.php
Expand Up @@ -163,7 +163,8 @@ public function testBuildingContextHeader()
$request->url('http://localhost')
->header([
'User-Agent' => 'CakePHP TestSuite',
'Content-Type' => 'application/json'
'Content-Type' => 'application/json',
'Cookie' => 'a=b; c=d',
])
->cookie([
'testing' => 'value',
Expand All @@ -179,7 +180,7 @@ public function testBuildingContextHeader()
'Connection: close',
'User-Agent: CakePHP TestSuite',
'Content-Type: application/json',
'Cookie: testing=value; utm_src=awesome',
'Cookie: a=b; c=d; testing=value; utm_src=awesome',
];
$this->assertEquals(implode("\r\n", $expected), $result['header']);
$this->assertEquals($options['redirect'], $result['max_redirects']);
Expand Down
1 change: 0 additions & 1 deletion tests/TestCase/Http/ClientTest.php
Expand Up @@ -611,7 +611,6 @@ public function testCookieStorage()
$http = new Client([
'host' => 'cakephp.org',
'adapter' => $adapter,
'cookieJar' => $cookieJar
]);

$http->get('/projects');
Expand Down

0 comments on commit 5034140

Please sign in to comment.