diff --git a/src/Curl/Curl.php b/src/Curl/Curl.php index 581a2a1..5f2c211 100644 --- a/src/Curl/Curl.php +++ b/src/Curl/Curl.php @@ -58,6 +58,7 @@ class Curl public $baseUrl = null; public $url = null; + public $effectiveUrl = null; public $requestHeaders = null; public $responseHeaders = null; public $rawResponseHeaders = ''; @@ -346,6 +347,7 @@ class Curl $this->httpError = in_array(floor($this->httpStatusCode / 100), array(4, 5)); $this->error = $this->curlError || $this->httpError; $this->errorCode = $this->error ? ($this->curlError ? $this->curlErrorCode : $this->httpStatusCode) : 0; + $this->effectiveUrl = curl_getinfo($this->curl, CURLINFO_EFFECTIVE_URL); // NOTE: CURLINFO_HEADER_OUT set to true is required for requestHeaders // to not be empty (e.g. $curl->setOpt(CURLINFO_HEADER_OUT, true);). diff --git a/tests/PHPCurlClass/PHPCurlClassTest.php b/tests/PHPCurlClass/PHPCurlClassTest.php index 0123696..49f4378 100644 --- a/tests/PHPCurlClass/PHPCurlClassTest.php +++ b/tests/PHPCurlClass/PHPCurlClassTest.php @@ -250,6 +250,18 @@ class CurlTest extends PHPUnit_Framework_TestCase $this->assertEquals('key=value', $curl->response); } + public function testEffectiveUrl() + { + $test = new Test(); + $test->server('redirect', 'GET'); + $this->assertEquals(Test::TEST_URL, $test->curl->effectiveUrl); + + $test = new Test(); + $test->curl->setOpt(CURLOPT_FOLLOWLOCATION, true); + $test->server('redirect', 'GET'); + $this->assertEquals(Test::TEST_URL . '?redirect', $test->curl->effectiveUrl); + } + public function testPostRequestMethod() { $test = new Test();