Allow setting the base url for requests.

Curl::setUrl() can now be used to specify the base url while passing only one
$data parameter to Curl::delete(), Curl::get(), Curl::head(), Curl::options(),
Curl::patch(), Curl::post(), and Curl::put().
This commit is contained in:
Zach Borboa
2015-02-22 18:25:16 +07:00
parent f9df529d07
commit 3aca8d167c
2 changed files with 105 additions and 8 deletions
+50 -7
View File
@@ -135,8 +135,14 @@ class Curl
$this->complete_function = $callback;
}
public function delete($url, $data = array())
public function delete($url_mixed, $data = array())
{
if (is_array($url_mixed)) {
$url = $this->base_url;
$data = $url_mixed;
} else {
$url = $url_mixed;
}
$this->setURL($url, $data);
$this->unsetHeader('Content-Length');
$this->setOpt(CURLOPT_CUSTOMREQUEST, 'DELETE');
@@ -217,8 +223,14 @@ class Curl
return $this->response;
}
public function get($url, $data = array())
public function get($url_mixed, $data = array())
{
if (is_array($url_mixed)) {
$url = $this->base_url;
$data = $url_mixed;
} else {
$url = $url_mixed;
}
$this->setURL($url, $data);
$this->setOpt(CURLOPT_CUSTOMREQUEST, 'GET');
$this->setOpt(CURLOPT_HTTPGET, true);
@@ -230,8 +242,14 @@ class Curl
return $this->options[$option];
}
public function head($url, $data = array())
public function head($url_mixed, $data = array())
{
if (is_array($url_mixed)) {
$url = $this->base_url;
$data = $url_mixed;
} else {
$url = $url_mixed;
}
$this->setURL($url, $data);
$this->setOpt(CURLOPT_CUSTOMREQUEST, 'HEAD');
$this->setOpt(CURLOPT_NOBODY, true);
@@ -244,16 +262,28 @@ class Curl
return strlen($header);
}
public function options($url, $data = array())
public function options($url_mixed, $data = array())
{
if (is_array($url_mixed)) {
$url = $this->base_url;
$data = $url_mixed;
} else {
$url = $url_mixed;
}
$this->setURL($url, $data);
$this->unsetHeader('Content-Length');
$this->setOpt(CURLOPT_CUSTOMREQUEST, 'OPTIONS');
return $this->exec();
}
public function patch($url, $data = array())
public function patch($url_mixed, $data = array())
{
if (is_array($url_mixed)) {
$url = $this->base_url;
$data = $url_mixed;
} else {
$url = $url_mixed;
}
$this->setURL($url);
$this->unsetHeader('Content-Length');
$this->setOpt(CURLOPT_CUSTOMREQUEST, 'PATCH');
@@ -261,8 +291,15 @@ class Curl
return $this->exec();
}
public function post($url, $data = array())
public function post($url_mixed, $data = array())
{
if (is_array($url_mixed)) {
$url = $this->base_url;
$data = $url_mixed;
} else {
$url = $url_mixed;
}
if (is_array($data) && empty($data)) {
$this->unsetHeader('Content-Length');
}
@@ -274,8 +311,14 @@ class Curl
return $this->exec();
}
public function put($url, $data = array())
public function put($url_mixed, $data = array())
{
if (is_array($url_mixed)) {
$url = $this->base_url;
$data = $url_mixed;
} else {
$url = $url_mixed;
}
$this->setURL($url);
$this->setOpt(CURLOPT_CUSTOMREQUEST, 'PUT');
$put_data = $this->buildPostData($data);
+55 -1
View File
@@ -131,6 +131,60 @@ class CurlTest extends PHPUnit_Framework_TestCase
$this->assertEquals(Test::TEST_URL . '?' . http_build_query($data), $test->curl->url);
}
public function testSetUrl()
{
$data = array('key' => 'value');
$curl = new Curl();
$curl->setHeader('X-DEBUG-TEST', 'get');
$curl->setUrl(Test::TEST_URL);
$curl->delete($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('key=value', $curl->response);
$curl = new Curl();
$curl->setHeader('X-DEBUG-TEST', 'get');
$curl->setUrl(Test::TEST_URL);
$curl->get($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('key=value', $curl->response);
$curl = new Curl();
$curl->setHeader('X-DEBUG-TEST', 'get');
$curl->setUrl(Test::TEST_URL);
$curl->head($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('HEAD /?key=value HTTP/1.1', $curl->request_headers['Request-Line']);
$curl = new Curl();
$curl->setHeader('X-DEBUG-TEST', 'get');
$curl->setUrl(Test::TEST_URL);
$curl->options($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('key=value', $curl->response);
$curl = new Curl();
$curl->setHeader('X-DEBUG-TEST', 'request_method');
$curl->setUrl(Test::TEST_URL);
$curl->patch($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('PATCH', $curl->response);
$curl = new Curl();
$curl->setHeader('X-DEBUG-TEST', 'post');
$curl->setUrl(Test::TEST_URL);
$curl->post($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('key=value', $curl->response);
$curl = new Curl();
$curl->setHeader('X-DEBUG-TEST', 'put');
$curl->setUrl(Test::TEST_URL);
$curl->put($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('key=value', $curl->response);
}
public function testPostRequestMethod()
{
$test = new Test();
@@ -618,7 +672,7 @@ class CurlTest extends PHPUnit_Framework_TestCase
$this->assertEquals('OK', $test->curl->response);
}
public function testRequestURL()
public function testRequestUrl()
{
$test = new Test();
$this->assertFalse(substr($test->server('request_uri', 'GET'), -1) === '?');