From 2f7073743e2745931897a466ef0d4086a0b07d8d Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sun, 22 Feb 2015 23:17:32 +0700 Subject: [PATCH 1/3] Allow setting the base url for requests in the constructor (Curl::__construct($base_url = null)) --- README.md | 2 +- src/Curl/Curl.php | 3 +- tests/PHPCurlClass/PHPCurlClassTest.php | 47 +++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 80bc72d..282a3ca 100644 --- a/README.md +++ b/README.md @@ -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) diff --git a/src/Curl/Curl.php b/src/Curl/Curl.php index 9f34d7c..80e8639 100644 --- a/src/Curl/Curl.php +++ b/src/Curl/Curl.php @@ -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) diff --git a/tests/PHPCurlClass/PHPCurlClassTest.php b/tests/PHPCurlClass/PHPCurlClassTest.php index 9ff0efb..4eb67c8 100644 --- a/tests/PHPCurlClass/PHPCurlClassTest.php +++ b/tests/PHPCurlClass/PHPCurlClassTest.php @@ -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'); From e5b0f627c243b31a9d9005beb0ed4ab177fc6579 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sun, 22 Feb 2015 23:21:33 +0700 Subject: [PATCH 2/3] Update function parameters in readme --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 282a3ca..a4c9728 100644 --- a/README.md +++ b/README.md @@ -153,18 +153,18 @@ Curl::buildPostData($data) Curl::call($function) Curl::close() Curl::complete($callback) -Curl::delete($url, $data = array()) +Curl::delete($url_mixed, $data = array()) Curl::download($url, $filename) Curl::error($callback) Curl::exec($ch = null) -Curl::get($url, $data = array()) +Curl::get($url_mixed, $data = array()) Curl::getOpt($option) -Curl::head($url, $data = array()) +Curl::head($url_mixed, $data = array()) Curl::headerCallback($ch, $header) -Curl::options($url, $data = array()) -Curl::patch($url, $data = array()) -Curl::post($url, $data = array()) -Curl::put($url, $data = array()) +Curl::options($url_mixed, $data = array()) +Curl::patch($url_mixed, $data = array()) +Curl::post($url_mixed, $data = array()) +Curl::put($url_mixed, $data = array()) Curl::setBasicAuthentication($username, $password = '') Curl::setCookie($key, $value) Curl::setCookieFile($cookie_file) From f6c9162132433f6ff03cd70621ec0c5ed7c471ef Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sun, 22 Feb 2015 23:21:55 +0700 Subject: [PATCH 3/3] Bump minor version (backwards-compatible API changes) --- composer.json | 2 +- src/Curl/Curl.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index c61438f..8c951b5 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ "name": "Zach Borboa" } ], - "version": "3.1.3", + "version": "3.2.3", "require": { "php": ">=5.3", "ext-curl": "*" diff --git a/src/Curl/Curl.php b/src/Curl/Curl.php index 80e8639..60383cb 100644 --- a/src/Curl/Curl.php +++ b/src/Curl/Curl.php @@ -4,7 +4,7 @@ namespace Curl; class Curl { - const VERSION = '3.1.3'; + const VERSION = '3.2.3'; const DEFAULT_TIMEOUT = 30; public $curl;