Add support for key => value cookies.

This makes using simple arrays easier, and I feel it is a long standing
omission from HttpSocket.

Fixes #3771
This commit is contained in:
mark_story 2013-04-18 21:22:50 -04:00
parent d01d291d13
commit 4d8dd12449
2 changed files with 9 additions and 3 deletions

View file

@ -942,7 +942,12 @@ class HttpSocket extends CakeSocket {
public function buildCookies($cookies) {
$header = array();
foreach ($cookies as $name => $cookie) {
$header[] = $name . '=' . $this->_escapeToken($cookie['value'], array(';'));
if (is_array($cookie)) {
$value = $this->_escapeToken($cookie['value'], array(';'));
} else {
$value = $this->_escapeToken($cookie, array(';'));
}
$header[] = $name . '=' . $value;
}
return $this->_buildHeader(array('Cookie' => implode('; ', $header)), 'pragmatic');
}

View file

@ -1590,9 +1590,10 @@ class HttpSocketTest extends CakeTestCase {
'people' => array(
'value' => 'jim,jack,johnny;',
'path' => '/accounts'
)
),
'key' => 'value'
);
$expect = "Cookie: foo=bar; people=jim,jack,johnny\";\"\r\n";
$expect = "Cookie: foo=bar; people=jim,jack,johnny\";\"; key=value\r\n";
$result = $this->Socket->buildCookies($cookies);
$this->assertEquals($expect, $result);
}