Allow setting the base url for requests in the constructor (Curl::__construct($base_url = null))

This commit is contained in:
Zach Borboa
2015-02-22 23:17:32 +07:00
parent d559a3d9c2
commit 2f7073743e
3 changed files with 50 additions and 2 deletions
+1 -1
View File
@@ -146,7 +146,7 @@ $multi_curl->start();
### Available Methods
```php
Curl::__construct()
Curl::__construct($base_url = null)
Curl::__destruct()
Curl::beforeSend($callback)
Curl::buildPostData($data)
+2 -1
View File
@@ -43,7 +43,7 @@ class Curl
private $json_pattern = '~^application/(?:json|vnd\.api\+json)~i';
private $xml_pattern = '~^(?:text/|application/(?:atom\+|rss\+)?)xml~i';
public function __construct()
public function __construct($base_url = null)
{
if (!extension_loaded('curl')) {
throw new \ErrorException('cURL library is not loaded');
@@ -58,6 +58,7 @@ class Curl
$this->setOpt(CURLOPT_HEADERFUNCTION, array($this, 'headerCallback'));
$this->setOpt(CURLOPT_RETURNTRANSFER, true);
$this->headers = new CaseInsensitiveArray();
$this->setURL($base_url);
}
public function beforeSend($callback)
+47
View File
@@ -131,6 +131,53 @@ class CurlTest extends PHPUnit_Framework_TestCase
$this->assertEquals(Test::TEST_URL . '?' . http_build_query($data), $test->curl->url);
}
public function testSetUrlInConstructor()
{
$data = array('key' => 'value');
$curl = new Curl(Test::TEST_URL);
$curl->setHeader('X-DEBUG-TEST', 'get');
$curl->delete($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('key=value', $curl->response);
$curl = new Curl(Test::TEST_URL);
$curl->setHeader('X-DEBUG-TEST', 'get');
$curl->get($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('key=value', $curl->response);
$curl = new Curl(Test::TEST_URL);
$curl->setHeader('X-DEBUG-TEST', 'get');
$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(Test::TEST_URL);
$curl->setHeader('X-DEBUG-TEST', 'get');
$curl->options($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('key=value', $curl->response);
$curl = new Curl(Test::TEST_URL);
$curl->setHeader('X-DEBUG-TEST', 'request_method');
$curl->patch($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('PATCH', $curl->response);
$curl = new Curl(Test::TEST_URL);
$curl->setHeader('X-DEBUG-TEST', 'post');
$curl->post($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('key=value', $curl->response);
$curl = new Curl(Test::TEST_URL);
$curl->setHeader('X-DEBUG-TEST', 'put');
$curl->put($data);
$this->assertEquals(Test::TEST_URL, $curl->base_url);
$this->assertEquals('key=value', $curl->response);
}
public function testSetUrl()
{
$data = array('key' => 'value');