<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,75 +1,145 @@
-&lt;?php
-/*
-The MIT License
-
-Copyright (c) 2008 Rafael S. Souza
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the &quot;Software&quot;), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-require_once &quot;Joeh/Net/Curl/Response.php&quot;;
-require_once &quot;Joeh/Net/Curl/Option.php&quot;;
-
-class Joeh_Net_Curl {
-
-	private $handle;
-	
-	private $option;
-
-	public function __construct($url = null) {
-		$this-&gt;init();
-		$this-&gt;option = new Joeh_Net_Curl_Option($this-&gt;getHandle());
-		$this-&gt;option-&gt;url($url);
-	}
-
-	public function __destruct() {
-		curl_close($this-&gt;getHandle());
-	}
-
-	public function __call($option, $arguments) {
-		call_user_func_array(array($this-&gt;option, $option), $arguments);
-		return $this;
-	}
-
-	public function getHandle() {
-		return $this-&gt;handle;
-	}
-
-	public function getOptions() {
-		return $this-&gt;option;
-	}
-
-	public function execute() {
-		$handle = $this-&gt;getHandle();
-		curl_setopt_array($handle, $this-&gt;option-&gt;getForExecute());
-		$response = curl_exec($handle);
-		return new Joeh_Net_Curl_Response($response);
-	}
-
-	##################
-	## PRIVATE METHODS
-	##################
-
-	private function init() {
-		$this-&gt;handle = curl_init();
-		curl_setopt($this-&gt;handle, CURLOPT_HEADER, true);
-		curl_setopt($this-&gt;handle, CURLOPT_RETURNTRANSFER, true);
-	}
-}
+&lt;?php
+/*
+The MIT License
+
+Copyright (c) 2008 Rafael S. Souza
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+require_once 'Joeh/Net/Curl/Response.php';
+require_once 'Joeh/Net/Curl/Option.php';
+
+class Joeh_Net_Curl {
+
+    #####################
+    ## PRIVATE ATTRIBUTES
+    #####################
+
+	private $handle;
+
+	private $option;
+
+    private $curlExec = true;
+
+    private $curlExecLoops = 0;
+
+    private $curlExecMaxLoops = 20;
+
+    ################
+    ## MAGIC METHODS
+    ################
+
+	public function __construct($url = null) {
+		$this-&gt;init();
+		$this-&gt;option = new Joeh_Net_Curl_Option($this-&gt;getHandle());
+		$this-&gt;option-&gt;url($url);
+	}
+
+	public function __destruct() {
+		curl_close($this-&gt;getHandle());
+	}
+
+	public function __call($option, $arguments) {
+		call_user_func_array(array($this-&gt;option, $option), $arguments);
+		return $this;
+	}
+
+    #################
+    ## PUBLIC METHODS
+    #################
+
+	public function getHandle() {
+		return $this-&gt;handle;
+	}
+
+	public function getOptions() {
+		return $this-&gt;option;
+	}
+
+	public function execute() {
+        if(isset($this-&gt;option-&gt;followLocation)) {
+            if(!@curl_setopt(CURLOPT_FOLLOWLOCATION, $this-&gt;option-&gt;followLocation)) {
+                unset($this-&gt;option-&gt;followLocation);
+                $this-&gt;curlExec = false;
+            }
+        }
+
+		$handle = $this-&gt;getHandle();
+		curl_setopt_array($handle, $this-&gt;option-&gt;getForExecute());
+		$response = $this-&gt;exec($handle);
+		return new Joeh_Net_Curl_Response($response);
+	}
+
+	##################
+	## PRIVATE METHODS
+	##################
+
+	private function init() {
+		$this-&gt;handle = curl_init();
+		curl_setopt($this-&gt;handle, CURLOPT_HEADER, true);
+		curl_setopt($this-&gt;handle, CURLOPT_RETURNTRANSFER, true);
+	}
+
+    private function exec($handle) {
+        if($this-&gt;curlExec) {
+            return curl_exec($handle);
+        }
+
+        if ($this-&gt;curlExecLoops++ &gt;= $this-&gt;curlExecMaxLoops) {
+            $this-&gt;curlExecLoops = 0;
+            return false;
+        }
+
+        $data = curl_exec($handle);
+
+        $debbbb = $data;
+        list($header, $data) = explode(PHP_EOL . PHP_EOL, $data, 2);
+        $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
+
+        if ($httpCode == 301 || $httpCode == 302) {
+            $matches = array();
+            preg_match('/Location:(.*?)\n/', $header, $matches);
+            $url = @parse_url(trim(array_pop($matches)));
+            if (!$url) {
+                $this-&gt;curlExecLoops = 0;
+                return $data;
+            }
+
+            $lastUrl = parse_url(curl_getinfo($handle, CURLINFO_EFFECTIVE_URL));
+            $newUrl = $url['scheme'] . '://' . $url['host'];
+
+            if(!empty($url['path'])) {
+                $newUrl .= $url['path'];
+            }
+
+            if(!empty($url['query'])) {
+                $newUrl .= '?' . $url['query'];
+            }
+
+            curl_setopt($handle, CURLOPT_URL, $newUrl);
+            return $this-&gt;exec($handle);
+        }
+        else {
+            $this-&gt;curlExecLoops = 0;
+            return $debbbb;
+        }
+    }
+}
 ?&gt;
\ No newline at end of file</diff>
      <filename>lib/Joeh/Net/Curl.php</filename>
    </modified>
    <modified>
      <diff>@@ -1,29 +1,29 @@
-&lt;?php
-/*
-The MIT License
-
-Copyright (c) 2008 Rafael S. Souza
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the &quot;Software&quot;), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-class Joeh_Net_Curl_Exception extends Exception {
-	
-}
+&lt;?php
+/*
+The MIT License
+
+Copyright (c) 2008 Rafael S. Souza
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+class Joeh_Net_Curl_Exception extends Exception {
+	
+}
 ?&gt;
\ No newline at end of file</diff>
      <filename>lib/Joeh/Net/Curl/Exception.php</filename>
    </modified>
    <modified>
      <diff>@@ -1,132 +1,133 @@
-&lt;?php
-/*
-The MIT License
-
-Copyright (c) 2008 Rafael S. Souza
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the &quot;Software&quot;), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/**
- * @see Joeh_Net_Curl_Exception
- */
-require_once &quot;Joeh/Net/Curl/Exception.php&quot;;
-
-class Joeh_Net_Curl_Option {
-
-	private $methods = array(
-		&quot;inFileSize&quot; =&gt; CURLOPT_INFILESIZE,
-		&quot;verbose&quot; =&gt; CURLOPT_VERBOSE,
-		/* &quot;header&quot; =&gt; CURLOPT_HEADER, */
-		&quot;noProgress&quot; =&gt; CURLOPT_NOPROGRESS,
-		&quot;nobody&quot; =&gt; CURLOPT_NOBODY,
-		&quot;failOnError&quot; =&gt; CURLOPT_FAILONERROR,
-		&quot;upload&quot; =&gt; CURLOPT_UPLOAD,
-		&quot;post&quot; =&gt; CURLOPT_POST,
-		&quot;ftpListOnly&quot; =&gt; CURLOPT_FTPLISTONLY,
-		&quot;ftpAppend&quot; =&gt; CURLOPT_FTPAPPEND,
-		&quot;netRc&quot; =&gt; CURLOPT_NETRC,
-		&quot;followLocation&quot; =&gt; CURLOPT_FOLLOWLOCATION,
-		&quot;put&quot; =&gt; CURLOPT_PUT,
-		/* &quot;mute&quot; =&gt; CURLOPT_MUTE, */
-		&quot;timeout&quot; =&gt; CURLOPT_TIMEOUT,
-		&quot;lowSpeedLimit&quot; =&gt; CURLOPT_LOW_SPEED_LIMIT,
-		&quot;lowSpeedTime&quot; =&gt; CURLOPT_LOW_SPEED_TIME,
-		&quot;resumeFrom&quot; =&gt; CURLOPT_RESUME_FROM,
-		&quot;caInfo&quot; =&gt; CURLOPT_CAINFO,
-		&quot;sslVerifyPeer&quot; =&gt; CURLOPT_SSL_VERIFYPEER,
-		&quot;sslVersion&quot; =&gt; CURLOPT_SSLVERSION,
-		&quot;sslVerifyHost&quot; =&gt; CURLOPT_SSL_VERIFYHOST,
-		&quot;timeCondition&quot; =&gt; CURLOPT_TIMECONDITION,
-		&quot;timeValue&quot; =&gt; CURLOPT_TIMEVALUE,
-		/* &quot;returnTransfer&quot; =&gt; CURLOPT_RETURNTRANSFER, */
-		&quot;url&quot; =&gt; CURLOPT_URL,
-		&quot;userPwd&quot; =&gt; CURLOPT_USERPWD,
-		&quot;proxyUserPwd&quot; =&gt; CURLOPT_PROXYUSERPWD,
-		&quot;range&quot; =&gt; CURLOPT_RANGE,
-		&quot;postFields&quot; =&gt; CURLOPT_POSTFIELDS,
-		&quot;referer&quot; =&gt; CURLOPT_REFERER,
-		&quot;userAgent&quot; =&gt; CURLOPT_USERAGENT,
-		&quot;ftpPort&quot; =&gt; CURLOPT_FTPPORT,
-		&quot;cookie&quot; =&gt; CURLOPT_COOKIE,
-		&quot;sslCert&quot; =&gt; CURLOPT_SSLCERT,
-		&quot;sslCertPasswd&quot; =&gt; CURLOPT_SSLCERTPASSWD,
-		&quot;cookieFile&quot; =&gt; CURLOPT_COOKIEFILE,
-		&quot;customRequest&quot; =&gt; CURLOPT_CUSTOMREQUEST,
-		&quot;proxy&quot; =&gt; CURLOPT_PROXY,
-		&quot;interface&quot; =&gt; CURLOPT_INTERFACE,
-		&quot;krb4Level&quot; =&gt; CURLOPT_KRB4LEVEL,
-		&quot;httpHeader&quot; =&gt; CURLOPT_HTTPHEADER,
-		&quot;quote&quot; =&gt; CURLOPT_QUOTE,
-		&quot;postQuote&quot; =&gt; CURLOPT_POSTQUOTE,
-		&quot;file&quot; =&gt; CURLOPT_FILE,
-		&quot;inFile&quot; =&gt; CURLOPT_INFILE,
-		&quot;writeHeader&quot; =&gt; CURLOPT_WRITEHEADER,
-		&quot;stdError&quot; =&gt; CURLOPT_STDERR
-	);
-
-	private $options = array();
-	
-	public function __call($option, $arguments) {
-		if(!isset($this-&gt;methods[$option])) {
-			throw new Joeh_Net_Curl_Exception(&quot;Invalid option - {$option}&quot;);
-		}
-
-		$option = $this-&gt;methods[$option];
-		$this-&gt;options[$option] = $arguments[0];
-	}
-
-	public function __get($option) {
-		$option = $this-&gt;methods[$option];
-		return $this-&gt;options[$option];
-	}
-
-	public function __isset($option) {
-		$option = $this-&gt;methods[$option];
-		return isset($this-&gt;options[$option]);
-	}
-	
-	public function getForExecute() {
-		return $this-&gt;options;
-	}
-
-	/*
-	public function __get($option) {
-		return $this-&gt;$option();
-	}
-
-	public function set($option, $value) {
-		curl_setopt($this-&gt;curl-&gt;getHandle(), $option, $value);
-	}
-
-	private function url() {
-		return $this-&gt;getInfo(CURLINFO_EFFECTIVE_URL);
-	}
-
-	private function verbose() {
-		return $this-&gt;getInfo(CURLOPT_AUTOREFERER);
-	}
-
-	private function getInfo($info) {
-		$handle = $this-&gt;curl-&gt;getHandle();
-		return curl_getinfo($handle, $info);
-	}
-	*/
-}
+&lt;?php
+/*
+The MIT License
+
+Copyright (c) 2008 Rafael S. Souza
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+/**
+ * @see Joeh_Net_Curl_Exception
+ */
+require_once &quot;Joeh/Net/Curl/Exception.php&quot;;
+
+class Joeh_Net_Curl_Option {
+
+	private $methods = array(
+		&quot;inFileSize&quot; =&gt; CURLOPT_INFILESIZE,
+		&quot;verbose&quot; =&gt; CURLOPT_VERBOSE,
+		/* &quot;header&quot; =&gt; CURLOPT_HEADER, */
+		&quot;noProgress&quot; =&gt; CURLOPT_NOPROGRESS,
+		&quot;nobody&quot; =&gt; CURLOPT_NOBODY,
+		&quot;failOnError&quot; =&gt; CURLOPT_FAILONERROR,
+		&quot;upload&quot; =&gt; CURLOPT_UPLOAD,
+		&quot;post&quot; =&gt; CURLOPT_POST,
+		&quot;ftpListOnly&quot; =&gt; CURLOPT_FTPLISTONLY,
+		&quot;ftpAppend&quot; =&gt; CURLOPT_FTPAPPEND,
+		&quot;netRc&quot; =&gt; CURLOPT_NETRC,
+		&quot;followLocation&quot; =&gt; CURLOPT_FOLLOWLOCATION,
+		&quot;put&quot; =&gt; CURLOPT_PUT,
+		/* &quot;mute&quot; =&gt; CURLOPT_MUTE, */
+		&quot;timeout&quot; =&gt; CURLOPT_TIMEOUT,
+		&quot;lowSpeedLimit&quot; =&gt; CURLOPT_LOW_SPEED_LIMIT,
+		&quot;lowSpeedTime&quot; =&gt; CURLOPT_LOW_SPEED_TIME,
+		&quot;resumeFrom&quot; =&gt; CURLOPT_RESUME_FROM,
+		&quot;caInfo&quot; =&gt; CURLOPT_CAINFO,
+		&quot;sslVerifyPeer&quot; =&gt; CURLOPT_SSL_VERIFYPEER,
+		&quot;sslVersion&quot; =&gt; CURLOPT_SSLVERSION,
+		&quot;sslVerifyHost&quot; =&gt; CURLOPT_SSL_VERIFYHOST,
+		&quot;timeCondition&quot; =&gt; CURLOPT_TIMECONDITION,
+		&quot;timeValue&quot; =&gt; CURLOPT_TIMEVALUE,
+		/* &quot;returnTransfer&quot; =&gt; CURLOPT_RETURNTRANSFER, */
+		&quot;url&quot; =&gt; CURLOPT_URL,
+		&quot;userPwd&quot; =&gt; CURLOPT_USERPWD,
+		&quot;proxyUserPwd&quot; =&gt; CURLOPT_PROXYUSERPWD,
+		&quot;range&quot; =&gt; CURLOPT_RANGE,
+		&quot;postFields&quot; =&gt; CURLOPT_POSTFIELDS,
+		&quot;referer&quot; =&gt; CURLOPT_REFERER,
+		&quot;userAgent&quot; =&gt; CURLOPT_USERAGENT,
+		&quot;ftpPort&quot; =&gt; CURLOPT_FTPPORT,
+		&quot;cookie&quot; =&gt; CURLOPT_COOKIE,
+		&quot;sslCert&quot; =&gt; CURLOPT_SSLCERT,
+		&quot;sslCertPasswd&quot; =&gt; CURLOPT_SSLCERTPASSWD,
+		&quot;cookieFile&quot; =&gt; CURLOPT_COOKIEFILE,
+		&quot;customRequest&quot; =&gt; CURLOPT_CUSTOMREQUEST,
+		&quot;proxy&quot; =&gt; CURLOPT_PROXY,
+		&quot;interface&quot; =&gt; CURLOPT_INTERFACE,
+		&quot;krb4Level&quot; =&gt; CURLOPT_KRB4LEVEL,
+		&quot;httpHeader&quot; =&gt; CURLOPT_HTTPHEADER,
+		&quot;quote&quot; =&gt; CURLOPT_QUOTE,
+		&quot;postQuote&quot; =&gt; CURLOPT_POSTQUOTE,
+		&quot;file&quot; =&gt; CURLOPT_FILE,
+		&quot;inFile&quot; =&gt; CURLOPT_INFILE,
+		&quot;writeHeader&quot; =&gt; CURLOPT_WRITEHEADER,
+		&quot;stdError&quot; =&gt; CURLOPT_STDERR
+	);
+
+	private $options = array();
+
+	public function __call($option, $arguments) {
+		if(!isset($this-&gt;methods[$option])) {
+			throw new Joeh_Net_Curl_Exception(&quot;Invalid option - {$option}&quot;);
+		}
+
+		$option = $this-&gt;methods[$option];
+		$this-&gt;options[$option] = $arguments[0];
+	}
+
+	public function __get($option) {
+		$option = $this-&gt;methods[$option];
+		return $this-&gt;options[$option];
+	}
+
+	public function __isset($option) {
+		$option = $this-&gt;methods[$option];
+		return isset($this-&gt;options[$option]);
+	}
+
+    public function __unset($option) {
+		$option = $this-&gt;methods[$option];
+		unset($this-&gt;options[$option]);
+    }
+
+	public function getForExecute() {
+		return $this-&gt;options;
+	}
+
+    /*
+	public function set($option, $value) {
+		curl_setopt($this-&gt;curl-&gt;getHandle(), $option, $value);
+	}
+
+	private function url() {
+		return $this-&gt;getInfo(CURLINFO_EFFECTIVE_URL);
+	}
+
+	private function verbose() {
+		return $this-&gt;getInfo(CURLOPT_AUTOREFERER);
+	}
+
+	private function getInfo($info) {
+		$handle = $this-&gt;curl-&gt;getHandle();
+		return curl_getinfo($handle, $info);
+	}
+	*/
+}
 ?&gt;
\ No newline at end of file</diff>
      <filename>lib/Joeh/Net/Curl/Option.php</filename>
    </modified>
    <modified>
      <diff>@@ -1,126 +1,127 @@
-&lt;?php
-/*
-The MIT License
-
-Copyright (c) 2008 Rafael S. Souza
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the &quot;Software&quot;), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/**
- * @see Joeh_String
- */
-require_once &quot;Joeh/String.php&quot;;
-
-class Joeh_Net_Curl_Response {
-
-	private $hasHeader = false;
-
-	private $hasBody = false;
-	
-	private $httpVersion;
-	
-	private $statusCode;
-	
-	private $statusDescription;
-
-	private $headers = array();
-	
-	private $body;
-
-	public function __construct($response) {
-		$this-&gt;processHeader($response);
-	}
-
-	public function __call($name, $arguments) {
-		if(isset($this-&gt;headers[$name])) {
-			return $this-&gt;headers[$name];
-		}
-		return null;
-	}
-	
-	public function hasHeader() {
-		return $this-&gt;hasHeader;
-	}
-
-	public function hasBody() {
-		return $this-&gt;hasBody;
-	}
-
-	public function httpVersion() {
-		return $this-&gt;httpVersion;
-	}
-	
-	public function statusCode() {
-		return $this-&gt;statusCode;
-	}
-	
-	public function statusDescription() {
-		return $this-&gt;statusDescription;
-	}
-	
-	public function body() {
-		return $this-&gt;body;
-	}
-
-	##################
-	## PRIVATE METHODS
-	##################
-
-	private function processHeader($response) {
-		if(strpos($response, &quot;HTTP/1.&quot;) === false) {
-			return;
-		}
-
-		$this-&gt;hasHeader = true;
-		$headers = split(&quot;\r\n&quot;, trim($response, &quot;\r\n&quot;));
-		foreach($headers as $header) {
-			if(empty($header)) {
-				break;
-			}
-
-			if(preg_match(&quot;/HTTP\/(1.[0-9]+) ([0-9]{3}) (.*)/s&quot;, $header, $match)) {
-				$this-&gt;httpVersion = $match[1];
-				$this-&gt;statusCode = (int)$match[2];
-				$this-&gt;statusDescription = $match[3];
-			}
-			else {
-				$indexOf = strpos($header, &quot;:&quot;);
-				$name = Joeh_String::camelize(substr($header, 0, $indexOf));
-				$value = substr($header, $indexOf+2);
-				$this-&gt;headers[$name] = $value;
-			}
-		}
-
-		$start = key($headers);
-		if($start &gt; 0) {
-			$count = count($headers);
-			$body = null;
-			for($i = $start; $i &lt; $count; $i++) {
-				$body .= $headers[$i];
-			}
-
-			if($body !== null) {
-				$this-&gt;hasBody = true; 
-				$this-&gt;body = $body;
-			}
-		}
-	}
-}
-?&gt;
\ No newline at end of file
+&lt;?php
+/*
+The MIT License
+
+Copyright (c) 2008 Rafael S. Souza
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+/**
+ * @see Joeh_String
+ */
+require_once &quot;Joeh/String.php&quot;;
+
+class Joeh_Net_Curl_Response {
+
+	private $hasHeader = false;
+
+	private $hasBody = false;
+	
+	private $httpVersion;
+	
+	private $statusCode;
+	
+	private $statusDescription;
+
+	private $headers = array();
+	
+	private $body;
+
+	public function __construct($response) {
+		$this-&gt;processHeader($response);
+	}
+
+	public function __call($name, $arguments) {
+		if(isset($this-&gt;headers[$name])) {
+			return $this-&gt;headers[$name];
+		}
+		return null;
+	}
+	
+	public function hasHeader() {
+		return $this-&gt;hasHeader;
+	}
+
+	public function hasBody() {
+		return $this-&gt;hasBody;
+	}
+
+	public function httpVersion() {
+		return $this-&gt;httpVersion;
+	}
+	
+	public function statusCode() {
+		return $this-&gt;statusCode;
+	}
+	
+	public function statusDescription() {
+		return $this-&gt;statusDescription;
+	}
+	
+	public function body() {
+		return $this-&gt;body;
+	}
+
+	##################
+	## PRIVATE METHODS
+	##################
+
+	private function processHeader($response) {
+		if(strpos($response, &quot;HTTP/1.&quot;) === false) {
+			return;
+		}
+
+		$this-&gt;hasHeader = true;
+		$headers = split(PHP_EOL, trim($response, PHP_EOL));
+		foreach($headers as $header) {
+			if(empty($header)) {
+				break;
+			}
+
+			if(preg_match(&quot;/HTTP\/(1.[0-9]+) ([0-9]{3}) (.*)/s&quot;, $header, $match)) {
+				$this-&gt;httpVersion = $match[1];
+				$this-&gt;statusCode = (int)$match[2];
+				$this-&gt;statusDescription = $match[3];
+			}
+			else {
+				$indexOf = strpos($header, &quot;:&quot;);
+				$name = Joeh_String::camelize(substr($header, 0, $indexOf));
+				$value = substr($header, $indexOf+2);
+				$this-&gt;headers[$name] = $value;
+			}
+		}
+
+		$start = key($headers);
+		if($start &gt; 0) {
+			$count = count($headers);
+			$body = null;
+			for($i = $start; $i &lt; $count; $i++) {
+				$body .= $headers[$i];
+			}
+
+			if($body !== null) {
+				$this-&gt;hasBody = true; 
+				$this-&gt;body = $body;
+			}
+		}
+	}
+}
+?&gt;
+</diff>
      <filename>lib/Joeh/Net/Curl/Response.php</filename>
    </modified>
    <modified>
      <diff>@@ -1,48 +1,48 @@
-&lt;?php
-/*
-The MIT License
-
-Copyright (c) 2008 Rafael S. Souza
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the &quot;Software&quot;), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-class Joeh_String {
-
-	/**
-	 * Transforma uma string em CamelCase
-	 *
-	 * @param string $string
-	 * @param boolean $capsFirst
-	 * @return string
-	 */
-	public static function camelize($string, $capsFirst = false) {
-		$string = str_replace('-', '_', $string);
-		$string = '_' . str_replace('_', ' ', $string);
-		$string = ltrim(str_replace(' ', '', ucwords($string)), '_');
-		if($capsFirst) {
-			$string = ucfirst($string);
-		}
-		else {
-			$string[0] = strtolower($string[0]);
-		}
-		return $string;
-	}
-}
+&lt;?php
+/*
+The MIT License
+
+Copyright (c) 2008 Rafael S. Souza
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+class Joeh_String {
+
+	/**
+	 * Transforma uma string em CamelCase
+	 *
+	 * @param string $string
+	 * @param boolean $capsFirst
+	 * @return string
+	 */
+	public static function camelize($string, $capsFirst = false) {
+		$string = str_replace('-', '_', $string);
+		$string = '_' . str_replace('_', ' ', $string);
+		$string = ltrim(str_replace(' ', '', ucwords($string)), '_');
+		if($capsFirst) {
+			$string = ucfirst($string);
+		}
+		else {
+			$string[0] = strtolower($string[0]);
+		}
+		return $string;
+	}
+}
 ?&gt;
\ No newline at end of file</diff>
      <filename>lib/Joeh/String.php</filename>
    </modified>
    <modified>
      <diff>@@ -1,39 +1,39 @@
-&lt;?php
-/*
-The MIT License
-
-Copyright (c) 2008 Rafael S. Souza
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the &quot;Software&quot;), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-error_reporting(E_ALL | E_STRICT | E_RECOVERABLE_ERROR);
-date_default_timezone_set(&quot;America/Sao_Paulo&quot;);
-
-require_once &quot;PHPUnit/Framework.php&quot;;
-
-/**
- * Classe base para testes unit&#225;rios do framework
- */
-class Joeh_Test_UnitTestCase extends PHPUnit_Framework_TestCase {
-
-}
-
-set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . &quot;/../../&quot;));
+&lt;?php
+/*
+The MIT License
+
+Copyright (c) 2008 Rafael S. Souza
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+error_reporting(E_ALL | E_STRICT | E_RECOVERABLE_ERROR);
+date_default_timezone_set(&quot;America/Sao_Paulo&quot;);
+
+require_once &quot;PHPUnit/Framework.php&quot;;
+
+/**
+ * Classe base para testes unit&#225;rios do framework
+ */
+class Joeh_Test_UnitTestCase extends PHPUnit_Framework_TestCase {
+
+}
+
+set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . &quot;/../../&quot;));
 ?&gt;
\ No newline at end of file</diff>
      <filename>lib/Joeh/Test/UnitTestCase.php</filename>
    </modified>
    <modified>
      <diff>@@ -1,61 +1,61 @@
-&lt;?php
-/*
-The MIT License
-
-Copyright (c) 2008 Rafael S. Souza
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the &quot;Software&quot;), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-require_once dirname(__FILE__) . &quot;/config.php&quot;;
-
-if(!defined('PHPUnit_MAIN_METHOD')) {
-    define('PHPUnit_MAIN_METHOD', 'AllTests::main');
-}
-
-set_include_path(get_include_path() . PATH_SEPARATOR . VENDOR_PATH . PATH_SEPARATOR . TEST_PATH);
- 
-require_once 'PHPUnit/Framework.php';
-require_once 'PHPUnit/TextUI/TestRunner.php';
-
-require_once 'Joeh/Net/CurlTest.php';
-require_once 'Joeh/Net/Curl/OptionTest.php';
-
-class AllTests {
-
-    public static function main() {
-        PHPUnit_TextUI_TestRunner::run(self::suite(), array(
-        	&quot;reportDirectory&quot; =&gt; COVERAGE_PATH
-        ));
-    }
-
-    public static function suite() {
-    	PHPUnit_Util_Filter::addFileToFilter(__FILE__);
-
-        $suite = new PHPUnit_Framework_TestSuite('Joeh Framework');
-        $suite-&gt;addTestSuite('Joeh_Net_CurlTest');
-        $suite-&gt;addTestSuite('Joeh_Net_Curl_OptionTest');
-        return $suite;
-    }
-}
- 
-if(PHPUnit_MAIN_METHOD == 'AllTests::main') {
-    AllTests::main();
-}
+&lt;?php
+/*
+The MIT License
+
+Copyright (c) 2008 Rafael S. Souza
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+require_once dirname(__FILE__) . &quot;/config.php&quot;;
+
+if(!defined('PHPUnit_MAIN_METHOD')) {
+    define('PHPUnit_MAIN_METHOD', 'AllTests::main');
+}
+
+set_include_path(get_include_path() . PATH_SEPARATOR . VENDOR_PATH . PATH_SEPARATOR . TEST_PATH);
+ 
+require_once 'PHPUnit/Framework.php';
+require_once 'PHPUnit/TextUI/TestRunner.php';
+
+require_once 'Joeh/Net/CurlTest.php';
+require_once 'Joeh/Net/Curl/OptionTest.php';
+
+class AllTests {
+
+    public static function main() {
+        PHPUnit_TextUI_TestRunner::run(self::suite(), array(
+        	&quot;reportDirectory&quot; =&gt; COVERAGE_PATH
+        ));
+    }
+
+    public static function suite() {
+    	PHPUnit_Util_Filter::addFileToFilter(__FILE__);
+
+        $suite = new PHPUnit_Framework_TestSuite('Joeh Framework');
+        $suite-&gt;addTestSuite('Joeh_Net_CurlTest');
+        $suite-&gt;addTestSuite('Joeh_Net_Curl_OptionTest');
+        return $suite;
+    }
+}
+ 
+if(PHPUnit_MAIN_METHOD == 'AllTests::main') {
+    AllTests::main();
+}
 ?&gt;
\ No newline at end of file</diff>
      <filename>tests/AllTests.php</filename>
    </modified>
    <modified>
      <diff>@@ -1,284 +1,284 @@
-&lt;?php
-/*
-The MIT License
-
-Copyright (c) 2008 Rafael S. Souza
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the &quot;Software&quot;), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-require_once dirname(__FILE__) . &quot;/../../../config.php&quot;;
-require_once VENDOR_PATH . &quot;Joeh/Test/UnitTestCase.php&quot;;
-require_once VENDOR_PATH . &quot;Joeh/Net/Curl/Option.php&quot;;
-
-class Joeh_Net_Curl_OptionTest extends Joeh_Test_UnitTestCase {
-	
-	private $curlOption;
-	
-	public function setUp() {
-		$this-&gt;curlOption = new Joeh_Net_Curl_Option();
-	}
-	
-	public function testUrl() {
-		$this-&gt;stringOptionsTest(&quot;url&quot;, &quot;http://www.w3haus.com.br&quot;);
-	}
-
-	public function testVerbose() {
-		$this-&gt;booleanOptionsTests(&quot;verbose&quot;);
-	}
-	
-	public function testInFileSize() {
-		$this-&gt;integerOptionsTests(&quot;lowSpeedLimit&quot;, 1024000);
-	}
-
-	public function testNoProgress() {
-		$this-&gt;booleanOptionsTests(&quot;noProgress&quot;);
-	}
-
-	public function testNobody() {
-		$this-&gt;booleanOptionsTests(&quot;nobody&quot;);
-	}
-	
-	public function testFailOnError() {
-		$this-&gt;booleanOptionsTests(&quot;failOnError&quot;);
-	}
-	
-	public function testUpload() {
-		$this-&gt;booleanOptionsTests(&quot;upload&quot;);
-	}
-	
-	public function testPost() {
-		$this-&gt;booleanOptionsTests(&quot;post&quot;);
-	}
-	
-	public function testFtpListOnly() {
-		$this-&gt;booleanOptionsTests(&quot;ftpListOnly&quot;);
-	}
-	
-	public function testFtpAppend() {
-		$this-&gt;booleanOptionsTests(&quot;ftpAppend&quot;);
-	}
-	
-	public function testNetRc() {
-		$this-&gt;booleanOptionsTests(&quot;netRc&quot;);
-	}
-	
-	public function testFollowLocation() {
-		$this-&gt;booleanOptionsTests(&quot;followLocation&quot;);
-	}
-	
-	public function testPut() {
-		$this-&gt;booleanOptionsTests(&quot;put&quot;);
-	}
-	
-	public function testTimeout() {
-		$this-&gt;integerOptionsTests(&quot;lowSpeedLimit&quot;, 5);
-	}
-	
-	public function testLowSpeedLimit() {
-		$this-&gt;integerOptionsTests(&quot;lowSpeedLimit&quot;, 100000);
-	}
-	
-	public function testLowSpeedTime() {
-	    $this-&gt;integerOptionsTests(&quot;lowSpeedLimit&quot;, 10);
-	}
-	
-	public function testResumeFrom() {
-	    $this-&gt;integerOptionsTests(&quot;lowSpeedLimit&quot;, 512);
-	}
-	
-	public function testCaInfo() {
-		$this-&gt;stringOptionsTest(&quot;caInfo&quot;, &quot;cainfo.file&quot;);
-	}
-	
-	public function testSslVerifyPeer() {
-	    $this-&gt;booleanOptionsTests(&quot;sslVerifyPeer&quot;);
-	}
-	
-	public function testSslVersion() {
-	    $this-&gt;integerOptionsTests(&quot;sslVersion&quot;, 2);
-	    $this-&gt;integerOptionsTests(&quot;sslVersion&quot;, 3);
-	}
-	
-	public function testSslVerifyHost() {
-		$this-&gt;booleanOptionsTests(&quot;sslVerifyHost&quot;);
-	}
-	
-	public function testTimeCondition() {
-	    $this-&gt;integerOptionsTests(&quot;timeCondition&quot;, time());
-	}
-	
-	public function testTimeValue() {
-	    $this-&gt;integerOptionsTests(&quot;timeValue&quot;, time());
-	}
-	
-	public function testUserPwd() {
-		$this-&gt;stringOptionsTest(&quot;userPwd&quot;, &quot;username:password&quot;);
-	}
-	
-	public function testProxyUserPwd() {
-		$this-&gt;stringOptionsTest(&quot;proxyUserPwd&quot;, &quot;username:password&quot;);
-	}
-	
-	public function testRange() {
-		$this-&gt;stringOptionsTest(&quot;range&quot;, &quot;100-200&quot;);
-		$this-&gt;stringOptionsTest(&quot;range&quot;, &quot;100-200,300-400&quot;);
-	}
-	
-	public function testPostFields() {
-		$this-&gt;stringOptionsTest(&quot;postFields&quot;, &quot;name=joeh&amp;age=23&quot;);
-	}
-	
-	public function testReferer() {
-		$this-&gt;stringOptionsTest(&quot;referer&quot;, &quot;http://www.google.com.br/?s=php&quot;);
-	}
-	
-	public function testUserAgent() {
-		$this-&gt;stringOptionsTest(&quot;userAgent&quot;, &quot;JoehBrowser 0.1&quot;);
-	}
-	
-	public function testFtpPort() {
-		$this-&gt;stringOptionsTest(&quot;ftpPort&quot;, &quot;127.0.0.1&quot;);
-		$this-&gt;stringOptionsTest(&quot;ftpPort&quot;, &quot;my.server&quot;);
-		$this-&gt;stringOptionsTest(&quot;ftpPort&quot;, &quot;eth0&quot;);
-		$this-&gt;stringOptionsTest(&quot;ftpPort&quot;, &quot;-&quot;);
-	}
-	
-	public function testCookie() {
-		$this-&gt;stringOptionsTest(&quot;cookie&quot;, &quot;mycookie&quot;);
-	}
-	
-	public function testSslCert() {
-		$this-&gt;stringOptionsTest(&quot;sslCert&quot;, &quot;my.cert&quot;);
-	}
-	
-	public function testSslCertPasswd() {
-		$this-&gt;stringOptionsTest(&quot;sslCertPasswd&quot;, &quot;mycertpasswd&quot;);
-	}
-	
-	public function testCookieFile() {
-		$this-&gt;stringOptionsTest(&quot;cookieFile&quot;, &quot;/tmp/cookie.txt&quot;);
-	}
-	
-	public function testCustomRequest() {
-		$this-&gt;stringOptionsTest(&quot;customRequest&quot;, &quot;PUT&quot;);
-		$this-&gt;stringOptionsTest(&quot;customRequest&quot;, &quot;DELETE&quot;);
-	}
-	
-	public function testProxy() {
-		$this-&gt;stringOptionsTest(&quot;proxy&quot;, &quot;myproxy.com&quot;);
-	}
-
-	public function testInterface() {
-		$this-&gt;stringOptionsTest(&quot;interface&quot;, &quot;eth0&quot;);
-		$this-&gt;stringOptionsTest(&quot;interface&quot;, &quot;127.0.0.1&quot;);
-		$this-&gt;stringOptionsTest(&quot;interface&quot;, &quot;myserver.com&quot;);
-	}
-	
-	public function testKrb4Level() {
-	    $levels = array('clear', 'safe', 'confidential', 'private');
-	    foreach($levels as $level) {
-	    	$this-&gt;stringOptionsTest(&quot;krb4Level&quot;, $level);
-	    }
-	}
-
-	public function testHttpHeader() {
-		$header = array(&quot;Accept: text/html&quot;, &quot;Content-type: text/html; charset=utf-8&quot;);
-
-	    $this-&gt;curlOption-&gt;httpHeader($header);
-	    $this-&gt;assertSame($header, $this-&gt;curlOption-&gt;httpHeader);
-	}
-
-	public function testQuote() {
-	    $commands = array(&quot;PORT&quot;, &quot;PASV&quot;, &quot;TYPE A&quot;);
-
-	    $this-&gt;curlOption-&gt;quote($commands);
-	    $this-&gt;assertSame($commands, $this-&gt;curlOption-&gt;quote);
-	}
-
-	public function testPostQuote() {
-	    $commands = array(&quot;PORT&quot;, &quot;PASV&quot;, &quot;TYPE A&quot;);
-
-	    $this-&gt;curlOption-&gt;quote($commands);
-	    $this-&gt;assertSame($commands, $this-&gt;curlOption-&gt;quote);
-	}
-
-	public function testFile() {
-	    $fp = fopen(TMP_PATH . &quot;file.out&quot;, &quot;w&quot;);
-
-	    $this-&gt;curlOption-&gt;file($fp);
-	    $this-&gt;assertSame($fp, $this-&gt;curlOption-&gt;file);
-	}
-
-	public function testInFile() {
-		$fp = fopen(TMP_PATH . &quot;file.out&quot;, &quot;r&quot;);
-
-	   	$this-&gt;curlOption-&gt;inFile($fp);
-	    $this-&gt;assertSame($fp, $this-&gt;curlOption-&gt;inFile);
-	}
-	
-	public function testWriteHeader() {
-		$callback = array($this, &quot;writeHeaderCallback&quot;);
-
-	    $this-&gt;curlOption-&gt;writeHeader($callback);
-	    $this-&gt;assertSame($callback, $this-&gt;curlOption-&gt;writeHeader);
-	}
-
-	public function testStdError() {
-	    $fp = fopen(TMP_PATH . &quot;file.err&quot;, &quot;w&quot;);
-
-	    $this-&gt;curlOption-&gt;stdError($fp);
-	    $this-&gt;assertSame($fp, $this-&gt;curlOption-&gt;stdError);
-	}
-	
-	public function testIsset() {
-		$this-&gt;assertFalse(isset($this-&gt;curlOption-&gt;url));
-		$this-&gt;curlOption-&gt;url(&quot;http://www.google.com.br&quot;);
-		$this-&gt;assertTrue(isset($this-&gt;curlOption-&gt;url));
-	}
-	
-	public function testGetForExecute() {
-		$this-&gt;curlOption-&gt;url(&quot;http://www.google.com.br&quot;);
-
-		$this-&gt;assertSame(array(CURLOPT_URL =&gt; &quot;http://www.google.com.br&quot;), $this-&gt;curlOption-&gt;getForExecute());
-	}
-
-	##################
-	## PRIVATE METHODS
-	##################
-	
-	private function stringOptionsTest($option, $value) {
-		$this-&gt;curlOption-&gt;$option($value);
-		$this-&gt;assertSame($value, $this-&gt;curlOption-&gt;$option);
-	}
-	
-	private function booleanOptionsTests($option) {
-		$this-&gt;curlOption-&gt;$option(true);
-		$this-&gt;assertTrue($this-&gt;curlOption-&gt;$option);
-		
-		$this-&gt;curlOption-&gt;$option(false);
-		$this-&gt;assertFalse($this-&gt;curlOption-&gt;$option);
-	}
-	
-	private function integerOptionsTests($option, $value) {
-		$this-&gt;curlOption-&gt;$option($value);
-		$this-&gt;assertSame($value, $this-&gt;curlOption-&gt;$option);
-	}
-}
+&lt;?php
+/*
+The MIT License
+
+Copyright (c) 2008 Rafael S. Souza
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+require_once dirname(__FILE__) . &quot;/../../../config.php&quot;;
+require_once VENDOR_PATH . &quot;Joeh/Test/UnitTestCase.php&quot;;
+require_once VENDOR_PATH . &quot;Joeh/Net/Curl/Option.php&quot;;
+
+class Joeh_Net_Curl_OptionTest extends Joeh_Test_UnitTestCase {
+	
+	private $curlOption;
+	
+	public function setUp() {
+		$this-&gt;curlOption = new Joeh_Net_Curl_Option();
+	}
+	
+	public function testUrl() {
+		$this-&gt;stringOptionsTest(&quot;url&quot;, &quot;http://www.w3haus.com.br&quot;);
+	}
+
+	public function testVerbose() {
+		$this-&gt;booleanOptionsTests(&quot;verbose&quot;);
+	}
+	
+	public function testInFileSize() {
+		$this-&gt;integerOptionsTests(&quot;lowSpeedLimit&quot;, 1024000);
+	}
+
+	public function testNoProgress() {
+		$this-&gt;booleanOptionsTests(&quot;noProgress&quot;);
+	}
+
+	public function testNobody() {
+		$this-&gt;booleanOptionsTests(&quot;nobody&quot;);
+	}
+	
+	public function testFailOnError() {
+		$this-&gt;booleanOptionsTests(&quot;failOnError&quot;);
+	}
+	
+	public function testUpload() {
+		$this-&gt;booleanOptionsTests(&quot;upload&quot;);
+	}
+	
+	public function testPost() {
+		$this-&gt;booleanOptionsTests(&quot;post&quot;);
+	}
+	
+	public function testFtpListOnly() {
+		$this-&gt;booleanOptionsTests(&quot;ftpListOnly&quot;);
+	}
+	
+	public function testFtpAppend() {
+		$this-&gt;booleanOptionsTests(&quot;ftpAppend&quot;);
+	}
+	
+	public function testNetRc() {
+		$this-&gt;booleanOptionsTests(&quot;netRc&quot;);
+	}
+	
+	public function testFollowLocation() {
+		$this-&gt;booleanOptionsTests(&quot;followLocation&quot;);
+	}
+	
+	public function testPut() {
+		$this-&gt;booleanOptionsTests(&quot;put&quot;);
+	}
+	
+	public function testTimeout() {
+		$this-&gt;integerOptionsTests(&quot;lowSpeedLimit&quot;, 5);
+	}
+	
+	public function testLowSpeedLimit() {
+		$this-&gt;integerOptionsTests(&quot;lowSpeedLimit&quot;, 100000);
+	}
+	
+	public function testLowSpeedTime() {
+	    $this-&gt;integerOptionsTests(&quot;lowSpeedLimit&quot;, 10);
+	}
+	
+	public function testResumeFrom() {
+	    $this-&gt;integerOptionsTests(&quot;lowSpeedLimit&quot;, 512);
+	}
+	
+	public function testCaInfo() {
+		$this-&gt;stringOptionsTest(&quot;caInfo&quot;, &quot;cainfo.file&quot;);
+	}
+	
+	public function testSslVerifyPeer() {
+	    $this-&gt;booleanOptionsTests(&quot;sslVerifyPeer&quot;);
+	}
+	
+	public function testSslVersion() {
+	    $this-&gt;integerOptionsTests(&quot;sslVersion&quot;, 2);
+	    $this-&gt;integerOptionsTests(&quot;sslVersion&quot;, 3);
+	}
+	
+	public function testSslVerifyHost() {
+		$this-&gt;booleanOptionsTests(&quot;sslVerifyHost&quot;);
+	}
+	
+	public function testTimeCondition() {
+	    $this-&gt;integerOptionsTests(&quot;timeCondition&quot;, time());
+	}
+	
+	public function testTimeValue() {
+	    $this-&gt;integerOptionsTests(&quot;timeValue&quot;, time());
+	}
+	
+	public function testUserPwd() {
+		$this-&gt;stringOptionsTest(&quot;userPwd&quot;, &quot;username:password&quot;);
+	}
+	
+	public function testProxyUserPwd() {
+		$this-&gt;stringOptionsTest(&quot;proxyUserPwd&quot;, &quot;username:password&quot;);
+	}
+	
+	public function testRange() {
+		$this-&gt;stringOptionsTest(&quot;range&quot;, &quot;100-200&quot;);
+		$this-&gt;stringOptionsTest(&quot;range&quot;, &quot;100-200,300-400&quot;);
+	}
+	
+	public function testPostFields() {
+		$this-&gt;stringOptionsTest(&quot;postFields&quot;, &quot;name=joeh&amp;age=23&quot;);
+	}
+	
+	public function testReferer() {
+		$this-&gt;stringOptionsTest(&quot;referer&quot;, &quot;http://www.google.com.br/?s=php&quot;);
+	}
+	
+	public function testUserAgent() {
+		$this-&gt;stringOptionsTest(&quot;userAgent&quot;, &quot;JoehBrowser 0.1&quot;);
+	}
+	
+	public function testFtpPort() {
+		$this-&gt;stringOptionsTest(&quot;ftpPort&quot;, &quot;127.0.0.1&quot;);
+		$this-&gt;stringOptionsTest(&quot;ftpPort&quot;, &quot;my.server&quot;);
+		$this-&gt;stringOptionsTest(&quot;ftpPort&quot;, &quot;eth0&quot;);
+		$this-&gt;stringOptionsTest(&quot;ftpPort&quot;, &quot;-&quot;);
+	}
+	
+	public function testCookie() {
+		$this-&gt;stringOptionsTest(&quot;cookie&quot;, &quot;mycookie&quot;);
+	}
+	
+	public function testSslCert() {
+		$this-&gt;stringOptionsTest(&quot;sslCert&quot;, &quot;my.cert&quot;);
+	}
+	
+	public function testSslCertPasswd() {
+		$this-&gt;stringOptionsTest(&quot;sslCertPasswd&quot;, &quot;mycertpasswd&quot;);
+	}
+	
+	public function testCookieFile() {
+		$this-&gt;stringOptionsTest(&quot;cookieFile&quot;, &quot;/tmp/cookie.txt&quot;);
+	}
+	
+	public function testCustomRequest() {
+		$this-&gt;stringOptionsTest(&quot;customRequest&quot;, &quot;PUT&quot;);
+		$this-&gt;stringOptionsTest(&quot;customRequest&quot;, &quot;DELETE&quot;);
+	}
+	
+	public function testProxy() {
+		$this-&gt;stringOptionsTest(&quot;proxy&quot;, &quot;myproxy.com&quot;);
+	}
+
+	public function testInterface() {
+		$this-&gt;stringOptionsTest(&quot;interface&quot;, &quot;eth0&quot;);
+		$this-&gt;stringOptionsTest(&quot;interface&quot;, &quot;127.0.0.1&quot;);
+		$this-&gt;stringOptionsTest(&quot;interface&quot;, &quot;myserver.com&quot;);
+	}
+	
+	public function testKrb4Level() {
+	    $levels = array('clear', 'safe', 'confidential', 'private');
+	    foreach($levels as $level) {
+	    	$this-&gt;stringOptionsTest(&quot;krb4Level&quot;, $level);
+	    }
+	}
+
+	public function testHttpHeader() {
+		$header = array(&quot;Accept: text/html&quot;, &quot;Content-type: text/html; charset=utf-8&quot;);
+
+	    $this-&gt;curlOption-&gt;httpHeader($header);
+	    $this-&gt;assertSame($header, $this-&gt;curlOption-&gt;httpHeader);
+	}
+
+	public function testQuote() {
+	    $commands = array(&quot;PORT&quot;, &quot;PASV&quot;, &quot;TYPE A&quot;);
+
+	    $this-&gt;curlOption-&gt;quote($commands);
+	    $this-&gt;assertSame($commands, $this-&gt;curlOption-&gt;quote);
+	}
+
+	public function testPostQuote() {
+	    $commands = array(&quot;PORT&quot;, &quot;PASV&quot;, &quot;TYPE A&quot;);
+
+	    $this-&gt;curlOption-&gt;quote($commands);
+	    $this-&gt;assertSame($commands, $this-&gt;curlOption-&gt;quote);
+	}
+
+	public function testFile() {
+	    $fp = fopen(TMP_PATH . &quot;file.out&quot;, &quot;w&quot;);
+
+	    $this-&gt;curlOption-&gt;file($fp);
+	    $this-&gt;assertSame($fp, $this-&gt;curlOption-&gt;file);
+	}
+
+	public function testInFile() {
+		$fp = fopen(TMP_PATH . &quot;file.out&quot;, &quot;r&quot;);
+
+	   	$this-&gt;curlOption-&gt;inFile($fp);
+	    $this-&gt;assertSame($fp, $this-&gt;curlOption-&gt;inFile);
+	}
+	
+	public function testWriteHeader() {
+		$callback = array($this, &quot;writeHeaderCallback&quot;);
+
+	    $this-&gt;curlOption-&gt;writeHeader($callback);
+	    $this-&gt;assertSame($callback, $this-&gt;curlOption-&gt;writeHeader);
+	}
+
+	public function testStdError() {
+	    $fp = fopen(TMP_PATH . &quot;file.err&quot;, &quot;w&quot;);
+
+	    $this-&gt;curlOption-&gt;stdError($fp);
+	    $this-&gt;assertSame($fp, $this-&gt;curlOption-&gt;stdError);
+	}
+	
+	public function testIsset() {
+		$this-&gt;assertFalse(isset($this-&gt;curlOption-&gt;url));
+		$this-&gt;curlOption-&gt;url(&quot;http://www.google.com.br&quot;);
+		$this-&gt;assertTrue(isset($this-&gt;curlOption-&gt;url));
+	}
+	
+	public function testGetForExecute() {
+		$this-&gt;curlOption-&gt;url(&quot;http://www.google.com.br&quot;);
+
+		$this-&gt;assertSame(array(CURLOPT_URL =&gt; &quot;http://www.google.com.br&quot;), $this-&gt;curlOption-&gt;getForExecute());
+	}
+
+	##################
+	## PRIVATE METHODS
+	##################
+	
+	private function stringOptionsTest($option, $value) {
+		$this-&gt;curlOption-&gt;$option($value);
+		$this-&gt;assertSame($value, $this-&gt;curlOption-&gt;$option);
+	}
+	
+	private function booleanOptionsTests($option) {
+		$this-&gt;curlOption-&gt;$option(true);
+		$this-&gt;assertTrue($this-&gt;curlOption-&gt;$option);
+		
+		$this-&gt;curlOption-&gt;$option(false);
+		$this-&gt;assertFalse($this-&gt;curlOption-&gt;$option);
+	}
+	
+	private function integerOptionsTests($option, $value) {
+		$this-&gt;curlOption-&gt;$option($value);
+		$this-&gt;assertSame($value, $this-&gt;curlOption-&gt;$option);
+	}
+}
 ?&gt;
\ No newline at end of file</diff>
      <filename>tests/Joeh/Net/Curl/OptionTest.php</filename>
    </modified>
    <modified>
      <diff>@@ -1,83 +1,83 @@
-&lt;?php
-/*
-The MIT License
-
-Copyright (c) 2008 Rafael S. Souza
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the &quot;Software&quot;), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-require_once dirname(__FILE__) . &quot;/../../../config.php&quot;;
-require_once VENDOR_PATH . &quot;Joeh/Test/UnitTestCase.php&quot;;
-require_once VENDOR_PATH . &quot;Joeh/Net/Curl/Response.php&quot;;
-
-class Joeh_Net_Curl_ResponseTest extends Joeh_Test_UnitTestCase {
-
-	/**
-	 * @var Joeh_Net_Curl_Response $response
-	 */
-	private $response;
-
-	public function setUp() {
-		if($this-&gt;getName() != &quot;testInit&quot;) {
-			$this-&gt;response = $this-&gt;init();
-		}
-	}
-
-	public function testInit() {
-		$response = $this-&gt;init();
-		$this-&gt;assertTrue($response-&gt;hasHeader());
-		$this-&gt;assertTrue($response-&gt;hasBody());
-	}
-
-	public function testHttpVersion() {
-		$this-&gt;assertSame(&quot;1.1&quot;, $this-&gt;response-&gt;httpVersion());
-	}
-
-	public function testStatusCode() {
-		$this-&gt;assertSame(302, $this-&gt;response-&gt;statusCode());
-	}
-
-	public function testLocation() {
-		$this-&gt;assertSame(&quot;http://www.google.com.br/&quot;, $this-&gt;response-&gt;location());
-	}
-
-	public function testContentType() {
-		$this-&gt;assertSame(&quot;text/html; charset=UTF-8&quot;, $this-&gt;response-&gt;contentType());
-	}
-
-	public function testBody() {
-		$this-&gt;assertNotNull($this-&gt;response-&gt;body());
-	}
-
-	/**
-	 * @return Joeh_Net_Curl_Response
-	 */
-	private function init() {
-		$ch = curl_init(&quot;http://www.google.com&quot;);
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
-		curl_setopt($ch, CURLOPT_HEADER, true);
-		//curl_setopt($ch, CURLOPT_NOBODY, true);
-		$response = curl_exec($ch);
-		curl_close($ch);
-
-		return new Joeh_Net_Curl_Response($response);
-	}
-}
+&lt;?php
+/*
+The MIT License
+
+Copyright (c) 2008 Rafael S. Souza
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+require_once dirname(__FILE__) . &quot;/../../../config.php&quot;;
+require_once VENDOR_PATH . &quot;Joeh/Test/UnitTestCase.php&quot;;
+require_once VENDOR_PATH . &quot;Joeh/Net/Curl/Response.php&quot;;
+
+class Joeh_Net_Curl_ResponseTest extends Joeh_Test_UnitTestCase {
+
+	/**
+	 * @var Joeh_Net_Curl_Response $response
+	 */
+	private $response;
+
+	public function setUp() {
+		if($this-&gt;getName() != &quot;testInit&quot;) {
+			$this-&gt;response = $this-&gt;init();
+		}
+	}
+
+	public function testInit() {
+		$response = $this-&gt;init();
+		$this-&gt;assertTrue($response-&gt;hasHeader());
+		$this-&gt;assertTrue($response-&gt;hasBody());
+	}
+
+	public function testHttpVersion() {
+		$this-&gt;assertSame(&quot;1.1&quot;, $this-&gt;response-&gt;httpVersion());
+	}
+
+	public function testStatusCode() {
+		$this-&gt;assertSame(302, $this-&gt;response-&gt;statusCode());
+	}
+
+	public function testLocation() {
+		$this-&gt;assertSame(&quot;http://www.google.com.br/&quot;, $this-&gt;response-&gt;location());
+	}
+
+	public function testContentType() {
+		$this-&gt;assertSame(&quot;text/html; charset=UTF-8&quot;, $this-&gt;response-&gt;contentType());
+	}
+
+	public function testBody() {
+		$this-&gt;assertNotNull($this-&gt;response-&gt;body());
+	}
+
+	/**
+	 * @return Joeh_Net_Curl_Response
+	 */
+	private function init() {
+		$ch = curl_init(&quot;http://www.google.com&quot;);
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+		curl_setopt($ch, CURLOPT_HEADER, true);
+		//curl_setopt($ch, CURLOPT_NOBODY, true);
+		$response = curl_exec($ch);
+		curl_close($ch);
+
+		return new Joeh_Net_Curl_Response($response);
+	}
+}
 ?&gt;
\ No newline at end of file</diff>
      <filename>tests/Joeh/Net/Curl/ResponseTest.php</filename>
    </modified>
    <modified>
      <diff>@@ -1,64 +1,77 @@
-&lt;?php
-/*
-The MIT License
-
-Copyright (c) 2008 Rafael S. Souza
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the &quot;Software&quot;), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-require_once dirname(__FILE__) . &quot;/../../config.php&quot;;
-require_once VENDOR_PATH . &quot;Joeh/Test/UnitTestCase.php&quot;;
-require_once VENDOR_PATH . &quot;Joeh/Net/Curl.php&quot;;
-
-class Joeh_Net_CurlTest extends Joeh_Test_UnitTestCase {
-
-	
-	/**
-	 * @var Joeh_Net_Curl $curl
-	 */
-	private $curl;
-
-	public function setUp() {
-		$this-&gt;curl = new Joeh_Net_Curl(&quot;http://www.google.com&quot;);
-	}
-	
-	public function tearDown() {
-		$this-&gt;curl = null;
-	}
-
-	public function testInit() {
-		$this-&gt;assertType(&quot;resource&quot;, $this-&gt;curl-&gt;getHandle());
-		$this-&gt;assertSame(&quot;http://www.google.com&quot;, $this-&gt;curl-&gt;getOptions()-&gt;url);
-
-		$curl = new Joeh_Net_Curl();
-		$this-&gt;assertType(&quot;resource&quot;, $curl-&gt;getHandle());
-		$this-&gt;assertNull($curl-&gt;getOptions()-&gt;url);
-	}
-
-	public function testExecute() {
-		$this-&gt;assertType(&quot;Joeh_Net_Curl_Response&quot;, $this-&gt;curl-&gt;execute());
-	}
-	
-	public function testUndefinedOption() {
-		$this-&gt;setExpectedException(&quot;Joeh_Net_Curl_Exception&quot;, &quot;Invalid option - invalidOption&quot;);
-		$this-&gt;curl-&gt;invalidOption(&quot;invalid value&quot;);
-	}
-}
+&lt;?php
+/*
+The MIT License
+
+Copyright (c) 2008 Rafael S. Souza
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+require_once dirname(__FILE__) . &quot;/../../config.php&quot;;
+require_once VENDOR_PATH . &quot;Joeh/Test/UnitTestCase.php&quot;;
+require_once VENDOR_PATH . &quot;Joeh/Net/Curl.php&quot;;
+
+class Joeh_Net_CurlTest extends Joeh_Test_UnitTestCase {
+
+
+	/**
+	 * @var Joeh_Net_Curl $curl
+	 */
+	private $curl;
+
+	public function setUp() {
+		$this-&gt;curl = new Joeh_Net_Curl(&quot;http://www.google.com&quot;);
+	}
+
+	public function tearDown() {
+		$this-&gt;curl = null;
+	}
+
+	public function testInit() {
+		$this-&gt;assertType(&quot;resource&quot;, $this-&gt;curl-&gt;getHandle());
+		$this-&gt;assertSame(&quot;http://www.google.com&quot;, $this-&gt;curl-&gt;getOptions()-&gt;url);
+
+		$curl = new Joeh_Net_Curl();
+		$this-&gt;assertType(&quot;resource&quot;, $curl-&gt;getHandle());
+		$this-&gt;assertNull($curl-&gt;getOptions()-&gt;url);
+	}
+
+	public function testExecute() {
+        $response = $this-&gt;curl-&gt;execute();
+		$this-&gt;assertType(&quot;Joeh_Net_Curl_Response&quot;, $response);
+		$this-&gt;assertTrue($response-&gt;hasHeader());
+        $this-&gt;assertSame(302, $response-&gt;statusCode());
+	}
+
+    public function testExecuteWithFollowLocationAndOpenBaseDir() {
+        $response = $this-&gt;curl
+            -&gt;followLocation(true)
+            -&gt;execute();
+
+        $this-&gt;assertType(&quot;Joeh_Net_Curl_Response&quot;, $response);
+        $this-&gt;assertTrue($response-&gt;hasHeader());
+        $this-&gt;assertSame(200, $response-&gt;statusCode());
+    }
+
+	public function testUndefinedOption() {
+		$this-&gt;setExpectedException(&quot;Joeh_Net_Curl_Exception&quot;, &quot;Invalid option - invalidOption&quot;);
+		$this-&gt;curl-&gt;invalidOption(&quot;invalid value&quot;);
+	}
+}
 ?&gt;
\ No newline at end of file</diff>
      <filename>tests/Joeh/Net/CurlTest.php</filename>
    </modified>
    <modified>
      <diff>@@ -1,49 +1,49 @@
-&lt;?php
-/*
-The MIT License
-
-Copyright (c) 2008 Rafael S. Souza
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the &quot;Software&quot;), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-if(!defined(&quot;ROOT_PATH&quot;)) {
-	define(&quot;ROOT_PATH&quot;, realpath(dirname(__FILE__) . &quot;/../&quot;) . &quot;/&quot;);
-}
-if(!defined(&quot;VENDOR_PATH&quot;)) {
-	define(&quot;VENDOR_PATH&quot;, ROOT_PATH . &quot;lib/&quot;);
-}
-if(!defined(&quot;TEST_PATH&quot;)) {
-	define(&quot;TEST_PATH&quot;, dirname(__FILE__));
-}
-if(!defined(&quot;TMP_PATH&quot;)) {
-	define(&quot;TMP_PATH&quot;, ROOT_PATH . &quot;tmp/&quot;);
-}
-if(!defined(&quot;COVERAGE_PATH&quot;)) {
-	define(&quot;COVERAGE_PATH&quot;, ROOT_PATH . &quot;coverage/&quot;);
-}
-if(!defined(&quot;LOG_PATH&quot;)) {
-	define(&quot;LOG_PATH&quot;, dirname(__FILE__) . &quot;/../logs/&quot;);
-}
-if(!defined('UPLOAD_PATH')) {
-	define(&quot;UPLOAD_PATH&quot;, ROOT_PATH . &quot;upload/&quot;);
-}
-
-set_include_path(get_include_path() . PATH_SEPARATOR . VENDOR_PATH);
+&lt;?php
+/*
+The MIT License
+
+Copyright (c) 2008 Rafael S. Souza
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+if(!defined(&quot;ROOT_PATH&quot;)) {
+	define(&quot;ROOT_PATH&quot;, realpath(dirname(__FILE__) . &quot;/../&quot;) . &quot;/&quot;);
+}
+if(!defined(&quot;VENDOR_PATH&quot;)) {
+	define(&quot;VENDOR_PATH&quot;, ROOT_PATH . &quot;lib/&quot;);
+}
+if(!defined(&quot;TEST_PATH&quot;)) {
+	define(&quot;TEST_PATH&quot;, dirname(__FILE__));
+}
+if(!defined(&quot;TMP_PATH&quot;)) {
+	define(&quot;TMP_PATH&quot;, ROOT_PATH . &quot;tmp/&quot;);
+}
+if(!defined(&quot;COVERAGE_PATH&quot;)) {
+	define(&quot;COVERAGE_PATH&quot;, ROOT_PATH . &quot;coverage/&quot;);
+}
+if(!defined(&quot;LOG_PATH&quot;)) {
+	define(&quot;LOG_PATH&quot;, dirname(__FILE__) . &quot;/../logs/&quot;);
+}
+if(!defined('UPLOAD_PATH')) {
+	define(&quot;UPLOAD_PATH&quot;, ROOT_PATH . &quot;upload/&quot;);
+}
+
+set_include_path(get_include_path() . PATH_SEPARATOR . VENDOR_PATH);
 ?&gt;
\ No newline at end of file</diff>
      <filename>tests/config.php</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>03bc320a58ee558f0bd1cd05cf26561d41982cb0</id>
    </parent>
  </parents>
  <author>
    <name>unknown</name>
    <email>rafael.ssouza@gmail.com</email>
  </author>
  <url>http://github.com/rafaelss/joeh-curl/commit/6e372665a418dca8a2c0ddeae1b6091cb867a3d3</url>
  <id>6e372665a418dca8a2c0ddeae1b6091cb867a3d3</id>
  <committed-date>2008-09-08T11:37:25-07:00</committed-date>
  <authored-date>2008-09-08T11:37:25-07:00</authored-date>
  <message>handling follow location opt to work with safe_mode/open_basedir</message>
  <tree>29b66f1b8f47c6da138b17e46ddf230f93d46e50</tree>
  <committer>
    <name>unknown</name>
    <email>rafael.ssouza@gmail.com</email>
  </committer>
</commit>
