mirror of
https://github.com/php-curl-class/php-curl-class.git
synced 2026-08-26 19:19:23 +00:00
Fix #171: Allow sending body data in delete()
This commit is contained in:
@@ -158,7 +158,7 @@ Curl::buildPostData($data)
|
||||
Curl::call()
|
||||
Curl::close()
|
||||
Curl::complete($callback)
|
||||
Curl::delete($url, $query_parameters = array())
|
||||
Curl::delete($url, $query_parameters = array(), $data = array())
|
||||
Curl::download($url, $mixed_filename)
|
||||
Curl::downloadComplete($fh)
|
||||
Curl::error($callback)
|
||||
@@ -196,7 +196,7 @@ Curl::is_array_assoc($array)
|
||||
Curl::is_array_multidim($array)
|
||||
MultiCurl::__construct($base_url = null)
|
||||
MultiCurl::__destruct()
|
||||
MultiCurl::addDelete($url, $query_parameters = array())
|
||||
MultiCurl::addDelete($url, $query_parameters = array(), $data = array())
|
||||
MultiCurl::addDownload($url, $mixed_filename)
|
||||
MultiCurl::addGet($url, $data = array())
|
||||
MultiCurl::addHead($url, $data = array())
|
||||
|
||||
+4
-2
@@ -146,15 +146,17 @@ class Curl
|
||||
$this->setOpt(CURLOPT_NOPROGRESS, false);
|
||||
}
|
||||
|
||||
public function delete($url, $query_parameters = array())
|
||||
public function delete($url, $query_parameters = array(), $data = array())
|
||||
{
|
||||
if (is_array($url)) {
|
||||
$data = $query_parameters;
|
||||
$query_parameters = $url;
|
||||
$url = $this->base_url;
|
||||
}
|
||||
|
||||
$this->setURL($url, $query_parameters);
|
||||
$this->unsetHeader('Content-Length');
|
||||
$this->setOpt(CURLOPT_CUSTOMREQUEST, 'DELETE');
|
||||
$this->setOpt(CURLOPT_POSTFIELDS, $this->buildPostData($data));
|
||||
return $this->exec();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,16 +27,17 @@ class MultiCurl
|
||||
$this->setURL($base_url);
|
||||
}
|
||||
|
||||
public function addDelete($url, $query_parameters = array())
|
||||
public function addDelete($url, $query_parameters = array(), $data = array())
|
||||
{
|
||||
if (is_array($url)) {
|
||||
$data = $query_parameters;
|
||||
$query_parameters = $url;
|
||||
$url = $this->base_url;
|
||||
}
|
||||
$curl = new Curl();
|
||||
$curl->setURL($url, $query_parameters);
|
||||
$curl->unsetHeader('Content-Length');
|
||||
$curl->setOpt(CURLOPT_CUSTOMREQUEST, 'DELETE');
|
||||
$curl->setOpt(CURLOPT_POSTFIELDS, $curl->buildPostData($data));
|
||||
$this->addHandle($curl);
|
||||
return $curl;
|
||||
}
|
||||
|
||||
@@ -15,11 +15,15 @@ class Test
|
||||
$this->curl->setOpt(CURLOPT_SSL_VERIFYHOST, false);
|
||||
}
|
||||
|
||||
public function server($test, $request_method, $data = array())
|
||||
public function server($test, $request_method, $query_parameters = array(), $data = array())
|
||||
{
|
||||
$this->curl->setHeader('X-DEBUG-TEST', $test);
|
||||
$request_method = strtolower($request_method);
|
||||
$this->curl->$request_method(self::TEST_URL, $data);
|
||||
if (is_array($data) && empty($data)) {
|
||||
$this->curl->$request_method(self::TEST_URL, $query_parameters);
|
||||
} else {
|
||||
$this->curl->$request_method(self::TEST_URL, $query_parameters, $data);
|
||||
}
|
||||
return $this->curl->response;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ class CurlTest extends PHPUnit_Framework_TestCase
|
||||
$this->assertEquals(Test::TEST_URL, $test->curl->base_url);
|
||||
$this->assertEquals(Test::TEST_URL, $test->curl->url);
|
||||
|
||||
// curl -v --get --request DELETE "http://127.0.0.1:8000/" --data "foo=bar"
|
||||
// curl -v --request DELETE "http://127.0.0.1:8000/?foo=bar"
|
||||
$test = new Test();
|
||||
$test->server('server', 'DELETE', $data);
|
||||
$this->assertEquals(Test::TEST_URL, $test->curl->base_url);
|
||||
@@ -151,6 +151,12 @@ class CurlTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
$data = array('key' => 'value');
|
||||
|
||||
$curl = new Curl(Test::TEST_URL);
|
||||
$curl->setHeader('X-DEBUG-TEST', 'delete_with_body');
|
||||
$curl->delete($data, array('wibble' => 'wubble'));
|
||||
$this->assertEquals(Test::TEST_URL, $curl->base_url);
|
||||
$this->assertEquals('{"get":{"key":"value"},"post":{"wibble":"wubble"}}', $curl->raw_response);
|
||||
|
||||
$curl = new Curl(Test::TEST_URL);
|
||||
$curl->setHeader('X-DEBUG-TEST', 'get');
|
||||
$curl->delete($data);
|
||||
@@ -419,6 +425,10 @@ class CurlTest extends PHPUnit_Framework_TestCase
|
||||
'test' => 'delete',
|
||||
'key' => 'test',
|
||||
)));
|
||||
|
||||
$test = new Test();
|
||||
$test->server('delete_with_body', 'DELETE', array('foo' => 'bar'), array('wibble' => 'wubble'));
|
||||
$this->assertEquals('{"get":{"foo":"bar"},"post":{"wibble":"wubble"}}', $test->curl->raw_response);
|
||||
}
|
||||
|
||||
public function testHeadRequestMethod()
|
||||
|
||||
@@ -1731,6 +1731,15 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
$data = array('key' => 'value');
|
||||
|
||||
$multi_curl = new MultiCurl(Test::TEST_URL);
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'delete_with_body');
|
||||
$multi_curl->addDelete($data, array('wibble' => 'wubble'))->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('{"get":{"key":"value"},"post":{"wibble":"wubble"}}',
|
||||
$instance->raw_response);
|
||||
});
|
||||
$multi_curl->start();
|
||||
|
||||
$multi_curl = new MultiCurl(Test::TEST_URL);
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'get');
|
||||
$multi_curl->addDelete($data)->complete(function($instance) {
|
||||
|
||||
@@ -223,6 +223,13 @@ if ($test == 'http_basic_auth') {
|
||||
|
||||
echo 'OK';
|
||||
exit;
|
||||
} elseif ($test === 'delete_with_body') {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'get' => $_GET,
|
||||
'post' => $_POST,
|
||||
));
|
||||
exit;
|
||||
}
|
||||
|
||||
header('Content-Type: text/plain');
|
||||
|
||||
Reference in New Issue
Block a user