diff options
-rw-r--r-- | Auth/OpenID/ParanoidHTTPFetcher.php | 31 | ||||
-rw-r--r-- | Auth/OpenID/PlainHTTPFetcher.php | 30 |
2 files changed, 56 insertions, 5 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); } } diff --git a/Auth/OpenID/PlainHTTPFetcher.php b/Auth/OpenID/PlainHTTPFetcher.php index 9dd3600..9919066 100644 --- a/Auth/OpenID/PlainHTTPFetcher.php +++ b/Auth/OpenID/PlainHTTPFetcher.php @@ -26,7 +26,7 @@ require_once "Auth/OpenID/HTTPFetcher.php"; * @package OpenID */ class Auth_OpenID_PlainHTTPFetcher extends Auth_OpenID_HTTPFetcher { - function get($url) + function get($url, $extra_headers = null) { if (!$this->allowedURL($url)) { trigger_error("Bad URL scheme in url: " . $url, @@ -84,6 +84,12 @@ class Auth_OpenID_PlainHTTPFetcher extends Auth_OpenID_HTTPFetcher { $errno = 0; $errstr = ''; + if ($extra_headers) { + foreach ($extra_headers as $h) { + $headers[] = $h; + } + } + $sock = fsockopen($host, $parts['port'], $errno, $errstr, $this->timeout); if ($sock === false) { @@ -118,7 +124,17 @@ class Auth_OpenID_PlainHTTPFetcher extends Auth_OpenID_HTTPFetcher { $off = $stop - time(); } - return new Auth_OpenID_HTTPResponse($url, $code, $headers, $body); + $new_headers = array(); + + foreach ($headers as $header) { + if (preg_match("/:/", $header)) { + list($name, $value) = explode(": ", $header, 2); + $new_headers[$name] = $value; + } + + } + + return new Auth_OpenID_HTTPResponse($url, $code, $new_headers, $body); } function post($url, $body) @@ -203,6 +219,16 @@ class Auth_OpenID_PlainHTTPFetcher extends Auth_OpenID_HTTPFetcher { $http_code = explode(" ", $headers[0]); $code = $http_code[1]; + $new_headers = array(); + + foreach ($headers as $header) { + if (preg_match("/:/", $header)) { + list($name, $value) = explode(": ", $header, 2); + $new_headers[$name] = $value; + } + + } + return new Auth_OpenID_HTTPResponse($url, $code, $headers, $response_body); } |