mirror of
https://github.com/php-curl-class/php-curl-class.git
synced 2026-08-31 12:43:14 +00:00
Merge pull request #150 from zachborboa/master
Allow setting the base url for MultiCurl requests
This commit is contained in:
@@ -164,6 +164,7 @@ Curl::headerCallback($ch, $header)
|
||||
Curl::options($url, $data = array())
|
||||
Curl::patch($url, $data = array())
|
||||
Curl::post($url, $data = array())
|
||||
Curl::progress($callback)
|
||||
Curl::put($url, $data = array())
|
||||
Curl::setBasicAuthentication($username, $password = '')
|
||||
Curl::setCookie($key, $value)
|
||||
@@ -191,7 +192,7 @@ Curl::is_array_multidim($array)
|
||||
|
||||
### Experimental Methods
|
||||
```php
|
||||
MultiCurl::__construct()
|
||||
MultiCurl::__construct($base_url = null)
|
||||
MultiCurl::__destruct()
|
||||
MultiCurl::addDelete($url, $data = array())
|
||||
MultiCurl::addDownload($url, $mixed_filename)
|
||||
@@ -216,6 +217,7 @@ MultiCurl::setOpt($option, $value)
|
||||
MultiCurl::setReferer($referer)
|
||||
MultiCurl::setReferrer($referrer)
|
||||
MultiCurl::setTimeout($seconds)
|
||||
MultiCurl::setURL($url)
|
||||
MultiCurl::setUserAgent($user_agent)
|
||||
MultiCurl::start()
|
||||
MultiCurl::success($callback)
|
||||
|
||||
+37
-1
@@ -4,6 +4,7 @@ namespace Curl;
|
||||
|
||||
class MultiCurl
|
||||
{
|
||||
public $base_url = null;
|
||||
public $multi_curl;
|
||||
public $curls = array();
|
||||
private $curl_fhs = array();
|
||||
@@ -19,14 +20,19 @@ class MultiCurl
|
||||
|
||||
private $json_decoder = null;
|
||||
|
||||
public function __construct()
|
||||
public function __construct($base_url = null)
|
||||
{
|
||||
$this->multi_curl = curl_multi_init();
|
||||
$this->headers = new CaseInsensitiveArray();
|
||||
$this->setURL($base_url);
|
||||
}
|
||||
|
||||
public function addDelete($url, $data = array())
|
||||
{
|
||||
if (is_array($url)) {
|
||||
$data = $url;
|
||||
$url = $this->base_url;
|
||||
}
|
||||
$curl = new Curl();
|
||||
$curl->setURL($url, $data);
|
||||
$curl->unsetHeader('Content-Length');
|
||||
@@ -60,6 +66,10 @@ class MultiCurl
|
||||
|
||||
public function addGet($url, $data = array())
|
||||
{
|
||||
if (is_array($url)) {
|
||||
$data = $url;
|
||||
$url = $this->base_url;
|
||||
}
|
||||
$curl = new Curl();
|
||||
$curl->setURL($url, $data);
|
||||
$curl->setOpt(CURLOPT_CUSTOMREQUEST, 'GET');
|
||||
@@ -70,6 +80,10 @@ class MultiCurl
|
||||
|
||||
public function addHead($url, $data = array())
|
||||
{
|
||||
if (is_array($url)) {
|
||||
$data = $url;
|
||||
$url = $this->base_url;
|
||||
}
|
||||
$curl = new Curl();
|
||||
$curl->setURL($url, $data);
|
||||
$curl->setOpt(CURLOPT_CUSTOMREQUEST, 'HEAD');
|
||||
@@ -80,6 +94,10 @@ class MultiCurl
|
||||
|
||||
public function addOptions($url, $data = array())
|
||||
{
|
||||
if (is_array($url)) {
|
||||
$data = $url;
|
||||
$url = $this->base_url;
|
||||
}
|
||||
$curl = new Curl();
|
||||
$curl->setURL($url, $data);
|
||||
$curl->unsetHeader('Content-Length');
|
||||
@@ -90,6 +108,10 @@ class MultiCurl
|
||||
|
||||
public function addPatch($url, $data = array())
|
||||
{
|
||||
if (is_array($url)) {
|
||||
$data = $url;
|
||||
$url = $this->base_url;
|
||||
}
|
||||
$curl = new Curl();
|
||||
$curl->setURL($url);
|
||||
$curl->unsetHeader('Content-Length');
|
||||
@@ -101,6 +123,11 @@ class MultiCurl
|
||||
|
||||
public function addPost($url, $data = array())
|
||||
{
|
||||
if (is_array($url)) {
|
||||
$data = $url;
|
||||
$url = $this->base_url;
|
||||
}
|
||||
|
||||
$curl = new Curl();
|
||||
|
||||
if (is_array($data) && empty($data)) {
|
||||
@@ -117,6 +144,10 @@ class MultiCurl
|
||||
|
||||
public function addPut($url, $data = array())
|
||||
{
|
||||
if (is_array($url)) {
|
||||
$data = $url;
|
||||
$url = $this->base_url;
|
||||
}
|
||||
$curl = new Curl();
|
||||
$curl->setURL($url);
|
||||
$curl->setOpt(CURLOPT_CUSTOMREQUEST, 'PUT');
|
||||
@@ -210,6 +241,11 @@ class MultiCurl
|
||||
$this->setOpt(CURLOPT_TIMEOUT, $seconds);
|
||||
}
|
||||
|
||||
public function setURL($url)
|
||||
{
|
||||
$this->base_url = $url;
|
||||
}
|
||||
|
||||
public function setUserAgent($user_agent)
|
||||
{
|
||||
$this->setOpt(CURLOPT_USERAGENT, $user_agent);
|
||||
|
||||
@@ -1726,4 +1726,131 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase
|
||||
$this->assertTrue($download_before_send_called);
|
||||
$this->assertFalse($download_callback_called);
|
||||
}
|
||||
|
||||
public function testSetUrlInConstructor()
|
||||
{
|
||||
$data = array('key' => 'value');
|
||||
|
||||
$multi_curl = new MultiCurl(Test::TEST_URL);
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'get');
|
||||
$multi_curl->addDelete($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response);
|
||||
});
|
||||
$multi_curl->start();
|
||||
|
||||
$multi_curl = new MultiCurl(Test::TEST_URL);
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'get');
|
||||
$multi_curl->addGet($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response);
|
||||
});
|
||||
$multi_curl->start();
|
||||
|
||||
$multi_curl = new MultiCurl(Test::TEST_URL);
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'get');
|
||||
$multi_curl->addHead($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals(
|
||||
'HEAD /?key=value HTTP/1.1', $instance->request_headers['Request-Line']);
|
||||
});
|
||||
$multi_curl->start();
|
||||
|
||||
$multi_curl = new MultiCurl(Test::TEST_URL);
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'get');
|
||||
$multi_curl->addOptions($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response);
|
||||
});
|
||||
$multi_curl->start();
|
||||
|
||||
$multi_curl = new MultiCurl(Test::TEST_URL);
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'request_method');
|
||||
$multi_curl->addPatch($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('PATCH', $instance->response);
|
||||
});
|
||||
$multi_curl->start();
|
||||
|
||||
$multi_curl = new MultiCurl(Test::TEST_URL);
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'post');
|
||||
$multi_curl->addPost($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response);
|
||||
});
|
||||
$multi_curl->start();
|
||||
|
||||
$multi_curl = new MultiCurl(Test::TEST_URL);
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'put');
|
||||
$multi_curl->addPut($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response);
|
||||
});
|
||||
$multi_curl->start();
|
||||
}
|
||||
|
||||
public function testSetUrl()
|
||||
{
|
||||
$data = array('key' => 'value');
|
||||
|
||||
$multi_curl = new MultiCurl();
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'get');
|
||||
$multi_curl->setUrl(Test::TEST_URL);
|
||||
$multi_curl->addDelete($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response);
|
||||
});
|
||||
$multi_curl->start();
|
||||
|
||||
$multi_curl = new MultiCurl();
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'get');
|
||||
$multi_curl->setUrl(Test::TEST_URL);
|
||||
$multi_curl->addGet($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response);
|
||||
});
|
||||
$multi_curl->start();
|
||||
|
||||
$multi_curl = new MultiCurl();
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'get');
|
||||
$multi_curl->setUrl(Test::TEST_URL);
|
||||
$multi_curl->addHead($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals(
|
||||
'HEAD /?key=value HTTP/1.1', $instance->request_headers['Request-Line']);
|
||||
});
|
||||
$multi_curl->start();
|
||||
|
||||
$multi_curl = new MultiCurl();
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'get');
|
||||
$multi_curl->setUrl(Test::TEST_URL);
|
||||
$multi_curl->addOptions($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response);
|
||||
});
|
||||
|
||||
$multi_curl = new MultiCurl();
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'request_method');
|
||||
$multi_curl->setUrl(Test::TEST_URL);
|
||||
$multi_curl->addPatch($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('PATCH', $instance->response);
|
||||
});
|
||||
|
||||
$multi_curl = new MultiCurl();
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'post');
|
||||
$multi_curl->setUrl(Test::TEST_URL);
|
||||
$multi_curl->addPost($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response);
|
||||
});
|
||||
|
||||
$multi_curl = new MultiCurl();
|
||||
$multi_curl->setHeader('X-DEBUG-TEST', 'put');
|
||||
$multi_curl->setUrl(Test::TEST_URL);
|
||||
$multi_curl->addPut($data)->complete(function($instance) {
|
||||
PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->base_url);
|
||||
PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user