summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortailor <cygnus@janrain.com>2006-05-30 20:05:01 +0000
committertailor <cygnus@janrain.com>2006-05-30 20:05:01 +0000
commita69933b33a8a66a9841e97a8afd52cb02459b5dc (patch)
treec860b0f6056817fb0ad038eea08343c2a787dc80
parent7fbc209b867a88bf4d2236e9cb4fd256263c803d (diff)
downloadphp-openid-a69933b33a8a66a9841e97a8afd52cb02459b5dc.zip
php-openid-a69933b33a8a66a9841e97a8afd52cb02459b5dc.tar.gz
php-openid-a69933b33a8a66a9841e97a8afd52cb02459b5dc.tar.bz2
[project @ Added extra_headers params to fetchers and updated header returns from fetchers]
-rw-r--r--Auth/OpenID/ParanoidHTTPFetcher.php31
-rw-r--r--Auth/OpenID/PlainHTTPFetcher.php30
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);
}