diff options
Diffstat (limited to 'Auth/OpenID/ParanoidHTTPFetcher.php')
-rw-r--r-- | Auth/OpenID/ParanoidHTTPFetcher.php | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/Auth/OpenID/ParanoidHTTPFetcher.php b/Auth/OpenID/ParanoidHTTPFetcher.php index c4e11cb..79c9e1f 100644 --- a/Auth/OpenID/ParanoidHTTPFetcher.php +++ b/Auth/OpenID/ParanoidHTTPFetcher.php @@ -67,7 +67,7 @@ class Auth_OpenID_ParanoidHTTPFetcher extends Auth_OpenID_HTTPFetcher { return strlen($data); } - function get($url) + function get($url, $extra_headers = null) { $stop = time() + $this->timeout; $off = $this->timeout; @@ -91,6 +91,10 @@ class Auth_OpenID_ParanoidHTTPFetcher extends Auth_OpenID_HTTPFetcher { curl_setopt($c, CURLOPT_HEADERFUNCTION, array(&$this, "_writeHeader")); + if ($extra_headers) { + curl_setopt($c, CURLOPT_HTTPHEADER, $extra_headers); + } + curl_setopt($c, CURLOPT_TIMEOUT, $off); curl_setopt($c, CURLOPT_URL, $url); @@ -111,8 +115,18 @@ class Auth_OpenID_ParanoidHTTPFetcher extends Auth_OpenID_HTTPFetcher { } else { $redir = false; curl_close($c); + + $new_headers = array(); + + foreach ($headers as $header) { + if (preg_match("/:/", $header)) { + list($name, $value) = explode(": ", $header, 2); + $new_headers[$name] = $value; + } + } + return new Services_Yadis_HTTPResponse($url, $code, - $headers, $body); + $new_headers, $body); } $off = $stop - time(); @@ -156,8 +170,19 @@ class Auth_OpenID_ParanoidHTTPFetcher extends Auth_OpenID_HTTPFetcher { $body = $this->data; curl_close($c); + + $new_headers = array(); + + foreach ($this->headers as $header) { + if (preg_match("/:/", $header)) { + list($name, $value) = explode(": ", $header, 2); + $new_headers[$name] = $value; + } + + } + return new Auth_OpenID_HTTPResponse($url, $code, - $this->headers, $body); + $new_headers, $body); } } |