mirror of
https://github.com/php-curl-class/php-curl-class.git
synced 2026-08-30 20:20:53 +00:00
@@ -219,6 +219,7 @@ Curl::setCookie($key, $value)
|
||||
Curl::setCookieFile($cookie_file)
|
||||
Curl::setCookieJar($cookie_jar)
|
||||
Curl::setCookieString($string)
|
||||
Curl::setCookies($cookies)
|
||||
Curl::setDefaultDecoder($decoder = 'json')
|
||||
Curl::setDefaultJsonDecoder()
|
||||
Curl::setDefaultTimeout()
|
||||
@@ -269,6 +270,7 @@ MultiCurl::setCookie($key, $value)
|
||||
MultiCurl::setCookieFile($cookie_file)
|
||||
MultiCurl::setCookieJar($cookie_jar)
|
||||
MultiCurl::setCookieString($string)
|
||||
MultiCurl::setCookies($cookies)
|
||||
MultiCurl::setDigestAuthentication($username, $password = '')
|
||||
MultiCurl::setHeader($key, $value)
|
||||
MultiCurl::setHeaders($headers)
|
||||
|
||||
@@ -728,6 +728,41 @@ class Curl
|
||||
}, array_keys($this->cookies), array_values($this->cookies))));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Cookies
|
||||
*
|
||||
* @access public
|
||||
* @param $cookies
|
||||
*/
|
||||
public function setCookies($cookies)
|
||||
{
|
||||
foreach ($cookies as $key => $value) {
|
||||
$name_chars = array();
|
||||
foreach (str_split($key) as $name_char) {
|
||||
if (!isset($this->rfc2616[$name_char])) {
|
||||
$name_chars[] = rawurlencode($name_char);
|
||||
} else {
|
||||
$name_chars[] = $name_char;
|
||||
}
|
||||
}
|
||||
|
||||
$value_chars = array();
|
||||
foreach (str_split($value) as $value_char) {
|
||||
if (!isset($this->rfc6265[$value_char])) {
|
||||
$value_chars[] = rawurlencode($value_char);
|
||||
} else {
|
||||
$value_chars[] = $value_char;
|
||||
}
|
||||
}
|
||||
|
||||
$this->cookies[implode('', $name_chars)] = implode('', $value_chars);
|
||||
}
|
||||
|
||||
$this->setOpt(CURLOPT_COOKIE, implode('; ', array_map(function ($k, $v) {
|
||||
return $k . '=' . $v;
|
||||
}, array_keys($this->cookies), array_values($this->cookies))));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Cookie
|
||||
*
|
||||
|
||||
@@ -413,6 +413,19 @@ class MultiCurl
|
||||
$this->cookies[$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Cookies
|
||||
*
|
||||
* @access public
|
||||
* @param $cookies
|
||||
*/
|
||||
public function setCookies($cookies)
|
||||
{
|
||||
foreach ($cookies as $key => $value) {
|
||||
$this->cookies[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Port
|
||||
*
|
||||
|
||||
@@ -962,6 +962,20 @@ class CurlTest extends PHPUnit_Framework_TestCase
|
||||
)));
|
||||
}
|
||||
|
||||
public function testSetCookies()
|
||||
{
|
||||
$cookies = array(
|
||||
'mycookie' => 'yum',
|
||||
'fruit' => 'apple',
|
||||
'color' => 'red',
|
||||
);
|
||||
$test = new Test();
|
||||
$test->curl->setCookies($cookies);
|
||||
$test->server('cookie', 'GET');
|
||||
|
||||
$this->assertEquals(http_build_query($cookies, '', '&'), $test->curl->response);
|
||||
}
|
||||
|
||||
public function testSetCookieEncodingSpace()
|
||||
{
|
||||
$curl = new Curl();
|
||||
|
||||
@@ -1999,7 +1999,7 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase
|
||||
$multi_curl->start();
|
||||
}
|
||||
|
||||
public function testCookies()
|
||||
public function testSetCookie()
|
||||
{
|
||||
$multi_curl = new MultiCurl();
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'setcookie');
|
||||
@@ -2034,6 +2034,51 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase
|
||||
$this->assertEquals('yummy', $get_2->responseCookies['mycookie']);
|
||||
}
|
||||
|
||||
public function testSetCookies()
|
||||
{
|
||||
$multi_curl = new MultiCurl();
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'setcookie');
|
||||
$multi_curl->setCookies(array(
|
||||
'mycookie' => 'yum',
|
||||
'cookie-for-all-before' => 'a',
|
||||
));
|
||||
|
||||
$get_1 = $multi_curl->addGet(Test::TEST_URL);
|
||||
$get_1->setCookies(array(
|
||||
'cookie-for-1st-request' => '1',
|
||||
));
|
||||
$get_1->complete(function ($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals('yum', $instance->responseCookies['mycookie']);
|
||||
PHPUnit_Framework_Assert::assertEquals('a', $instance->responseCookies['cookie-for-all-before']);
|
||||
PHPUnit_Framework_Assert::assertEquals('b', $instance->responseCookies['cookie-for-all-after']);
|
||||
PHPUnit_Framework_Assert::assertEquals('1', $instance->responseCookies['cookie-for-1st-request']);
|
||||
});
|
||||
|
||||
$get_2 = $multi_curl->addGet(Test::TEST_URL);
|
||||
$get_2->setCookies(array(
|
||||
'cookie-for-2nd-request' => '2',
|
||||
));
|
||||
$get_2->beforeSend(function ($instance) {
|
||||
$instance->setCookies(array(
|
||||
'mycookie' => 'yummy',
|
||||
));
|
||||
});
|
||||
$get_2->complete(function ($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals('yummy', $instance->responseCookies['mycookie']);
|
||||
PHPUnit_Framework_Assert::assertEquals('a', $instance->responseCookies['cookie-for-all-before']);
|
||||
PHPUnit_Framework_Assert::assertEquals('b', $instance->responseCookies['cookie-for-all-after']);
|
||||
PHPUnit_Framework_Assert::assertEquals('2', $instance->responseCookies['cookie-for-2nd-request']);
|
||||
});
|
||||
|
||||
$multi_curl->setCookies(array(
|
||||
'cookie-for-all-after' => 'b',
|
||||
));
|
||||
$multi_curl->start();
|
||||
|
||||
$this->assertEquals('yum', $get_1->responseCookies['mycookie']);
|
||||
$this->assertEquals('yummy', $get_2->responseCookies['mycookie']);
|
||||
}
|
||||
|
||||
public function testJSONDecoder()
|
||||
{
|
||||
$multi_curl = new MultiCurl();
|
||||
|
||||
Reference in New Issue
Block a user