Implement MultiCurl::addPost()

This commit is contained in:
Zach Borboa
2015-02-10 14:00:09 -08:00
parent 5eb436cb26
commit 51420bb764
3 changed files with 51 additions and 4 deletions
+1 -1
View File
@@ -380,7 +380,7 @@ class Curl
return $response_headers;
}
private function postfields($data)
public function postfields($data)
{
if (is_array($data)) {
if (self::is_array_multidim($data)) {
+12
View File
@@ -74,6 +74,18 @@ class MultiCurl
public function addPost($url, $data = array())
{
$curl = new Curl();
if (is_array($data) && empty($data)) {
$curl->unsetHeader('Content-Length');
}
$curl->setURL($url);
$curl->setOpt(CURLOPT_CUSTOMREQUEST, 'POST');
$curl->setOpt(CURLOPT_POST, true);
$curl->setOpt(CURLOPT_POSTFIELDS, $curl->postfields($data));
$this->addHandle($curl);
return $curl;
}
public function addPut($url, $data = array())
+38 -3
View File
@@ -33,13 +33,19 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase
$patch_error_called = false;
$patch_complete_called = false;
$post_before_send_called = false;
$post_success_called = false;
$post_error_called = false;
$post_complete_called = false;
$multi_curl = new MultiCurl();
$multi_curl->beforeSend(function ($instance) use (
&$delete_before_send_called, &$delete_success_called, &$delete_error_called, &$delete_complete_called,
&$get_before_send_called, &$get_success_called, &$get_error_called, &$get_complete_called,
&$head_before_send_called, &$head_success_called, &$head_error_called, &$head_complete_called,
&$options_before_send_called, &$options_success_called, &$options_error_called, &$options_complete_called,
&$patch_before_send_called, &$patch_success_called, &$patch_error_called, &$patch_complete_called) {
&$patch_before_send_called, &$patch_success_called, &$patch_error_called, &$patch_complete_called,
&$post_before_send_called, &$post_success_called, &$post_error_called, &$post_complete_called) {
PHPUnit_Framework_Assert::assertInstanceOf('Curl\Curl', $instance);
$request_method = $instance->getOpt(CURLOPT_CUSTOMREQUEST);
echo 'beforeSend request method: ' . $request_method . "\n";
@@ -78,13 +84,21 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase
PHPUnit_Framework_Assert::assertFalse($patch_complete_called);
$patch_before_send_called = true;
}
if ($request_method === 'POST') {
PHPUnit_Framework_Assert::assertFalse($post_before_send_called);
PHPUnit_Framework_Assert::assertFalse($post_success_called);
PHPUnit_Framework_Assert::assertFalse($post_error_called);
PHPUnit_Framework_Assert::assertFalse($post_complete_called);
$post_before_send_called = true;
}
});
$multi_curl->success(function ($instance) use (
&$delete_before_send_called, &$delete_success_called, &$delete_error_called, &$delete_complete_called,
&$get_before_send_called, &$get_success_called, &$get_error_called, &$get_complete_called,
&$head_before_send_called, &$head_success_called, &$head_error_called, &$head_complete_called,
&$options_before_send_called, &$options_success_called, &$options_error_called, &$options_complete_called,
&$patch_before_send_called, &$patch_success_called, &$patch_error_called, &$patch_complete_called) {
&$patch_before_send_called, &$patch_success_called, &$patch_error_called, &$patch_complete_called,
&$post_before_send_called, &$post_success_called, &$post_error_called, &$post_complete_called) {
PHPUnit_Framework_Assert::assertInstanceOf('Curl\Curl', $instance);
$request_method = $instance->getOpt(CURLOPT_CUSTOMREQUEST);
echo 'success request method: ' . $request_method . "\n";
@@ -123,6 +137,13 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase
PHPUnit_Framework_Assert::assertFalse($patch_complete_called);
$patch_success_called = true;
}
if ($request_method === 'POST') {
PHPUnit_Framework_Assert::assertTrue($post_before_send_called);
PHPUnit_Framework_Assert::assertFalse($post_success_called);
PHPUnit_Framework_Assert::assertFalse($post_error_called);
PHPUnit_Framework_Assert::assertFalse($post_complete_called);
$post_success_called = true;
}
});
$multi_curl->error(function ($instance) use (
&$delete_error_called,
@@ -141,7 +162,8 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase
&$get_before_send_called, &$get_success_called, &$get_error_called, &$get_complete_called,
&$head_before_send_called, &$head_success_called, &$head_error_called, &$head_complete_called,
&$options_before_send_called, &$options_success_called, &$options_error_called, &$options_complete_called,
&$patch_before_send_called, &$patch_success_called, &$patch_error_called, &$patch_complete_called) {
&$patch_before_send_called, &$patch_success_called, &$patch_error_called, &$patch_complete_called,
&$post_before_send_called, &$post_success_called, &$post_error_called, &$post_complete_called) {
PHPUnit_Framework_Assert::assertInstanceOf('Curl\Curl', $instance);
$request_method = $instance->getOpt(CURLOPT_CUSTOMREQUEST);
echo 'complete request method: ' . $request_method . "\n";
@@ -180,6 +202,13 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase
PHPUnit_Framework_Assert::assertFalse($patch_complete_called);
$patch_complete_called = true;
}
if ($request_method === 'POST') {
PHPUnit_Framework_Assert::assertTrue($post_before_send_called);
PHPUnit_Framework_Assert::assertTrue($post_success_called);
PHPUnit_Framework_Assert::assertFalse($post_error_called);
PHPUnit_Framework_Assert::assertFalse($post_complete_called);
$post_complete_called = true;
}
});
$multi_curl->addDelete(Test::TEST_URL);
@@ -187,6 +216,7 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase
$multi_curl->addHead(Test::TEST_URL);
$multi_curl->addOptions(Test::TEST_URL);
$multi_curl->addPatch(Test::TEST_URL);
$multi_curl->addPost(Test::TEST_URL);
$multi_curl->start();
$this->assertTrue($delete_before_send_called);
@@ -213,6 +243,11 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase
$this->assertTrue($patch_success_called);
$this->assertFalse($patch_error_called);
$this->assertTrue($patch_complete_called);
$this->assertTrue($post_before_send_called);
$this->assertTrue($post_success_called);
$this->assertFalse($post_error_called);
$this->assertTrue($post_complete_called);
}
public function testMultiCurlCallbackError()