diff --git a/src/Curl/MultiCurl.php b/src/Curl/MultiCurl.php index 8b6ba11..c357683 100644 --- a/src/Curl/MultiCurl.php +++ b/src/Curl/MultiCurl.php @@ -63,6 +63,13 @@ class MultiCurl public function addPatch($url, $data = array()) { + $curl = new Curl(); + $curl->setURL($url); + $curl->unsetHeader('Content-Length'); + $curl->setOpt(CURLOPT_CUSTOMREQUEST, 'PATCH'); + $curl->setOpt(CURLOPT_POSTFIELDS, $data); + $this->addHandle($curl); + return $curl; } public function addPost($url, $data = array()) diff --git a/tests/PHPCurlClass/PHPMultiCurlClassTest.php b/tests/PHPCurlClass/PHPMultiCurlClassTest.php index fd1e3a0..86456e3 100644 --- a/tests/PHPCurlClass/PHPMultiCurlClassTest.php +++ b/tests/PHPCurlClass/PHPMultiCurlClassTest.php @@ -28,12 +28,18 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase $options_error_called = false; $options_complete_called = false; + $patch_before_send_called = false; + $patch_success_called = false; + $patch_error_called = false; + $patch_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) { + &$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) { PHPUnit_Framework_Assert::assertInstanceOf('Curl\Curl', $instance); $request_method = $instance->getOpt(CURLOPT_CUSTOMREQUEST); echo 'beforeSend request method: ' . $request_method . "\n"; @@ -65,12 +71,20 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase PHPUnit_Framework_Assert::assertFalse($options_complete_called); $options_before_send_called = true; } + if ($request_method === 'PATCH') { + PHPUnit_Framework_Assert::assertFalse($patch_before_send_called); + PHPUnit_Framework_Assert::assertFalse($patch_success_called); + PHPUnit_Framework_Assert::assertFalse($patch_error_called); + PHPUnit_Framework_Assert::assertFalse($patch_complete_called); + $patch_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) { + &$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) { PHPUnit_Framework_Assert::assertInstanceOf('Curl\Curl', $instance); $request_method = $instance->getOpt(CURLOPT_CUSTOMREQUEST); echo 'success request method: ' . $request_method . "\n"; @@ -102,22 +116,32 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase PHPUnit_Framework_Assert::assertFalse($options_complete_called); $options_success_called = true; } + if ($request_method === 'PATCH') { + PHPUnit_Framework_Assert::assertTrue($patch_before_send_called); + PHPUnit_Framework_Assert::assertFalse($patch_success_called); + PHPUnit_Framework_Assert::assertFalse($patch_error_called); + PHPUnit_Framework_Assert::assertFalse($patch_complete_called); + $patch_success_called = true; + } }); $multi_curl->error(function ($instance) use ( &$delete_error_called, &$get_error_called, &$head_error_called, - &$options_error_called) { + &$options_error_called, + &$patch_error_called) { $delete_error_called = true; $get_error_called = true; $head_error_called = true; $options_error_called = true; + $patch_error_called = true; }); $multi_curl->complete(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) { + &$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) { PHPUnit_Framework_Assert::assertInstanceOf('Curl\Curl', $instance); $request_method = $instance->getOpt(CURLOPT_CUSTOMREQUEST); echo 'complete request method: ' . $request_method . "\n"; @@ -149,12 +173,20 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase PHPUnit_Framework_Assert::assertFalse($options_complete_called); $options_complete_called = true; } + if ($request_method === 'PATCH') { + PHPUnit_Framework_Assert::assertTrue($patch_before_send_called); + PHPUnit_Framework_Assert::assertTrue($patch_success_called); + PHPUnit_Framework_Assert::assertFalse($patch_error_called); + PHPUnit_Framework_Assert::assertFalse($patch_complete_called); + $patch_complete_called = true; + } }); $multi_curl->addDelete(Test::TEST_URL); $multi_curl->addGet(Test::TEST_URL); $multi_curl->addHead(Test::TEST_URL); $multi_curl->addOptions(Test::TEST_URL); + $multi_curl->addPatch(Test::TEST_URL); $multi_curl->start(); $this->assertTrue($delete_before_send_called); @@ -176,6 +208,11 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase $this->assertTrue($options_success_called); $this->assertFalse($options_error_called); $this->assertTrue($options_complete_called); + + $this->assertTrue($patch_before_send_called); + $this->assertTrue($patch_success_called); + $this->assertFalse($patch_error_called); + $this->assertTrue($patch_complete_called); } public function testMultiCurlCallbackError()