summaryrefslogtreecommitdiffstats
path: root/Auth
diff options
context:
space:
mode:
authortailor <cygnus@janrain.com>2007-01-12 20:21:34 +0000
committertailor <cygnus@janrain.com>2007-01-12 20:21:34 +0000
commit1dce056e69206f1d1f2f1f42e48c4d9e16e60760 (patch)
tree719ae7f60a585f4b8eaef11e57c45ce51cbef88e /Auth
parent7a4d1c9dd6562868509d7c74219c81d216b82c10 (diff)
downloadphp-openid-1dce056e69206f1d1f2f1f42e48c4d9e16e60760.zip
php-openid-1dce056e69206f1d1f2f1f42e48c4d9e16e60760.tar.gz
php-openid-1dce056e69206f1d1f2f1f42e48c4d9e16e60760.tar.bz2
[project @ Discovery refactoring: add discovery result, simplify discovery logic]
Diffstat (limited to 'Auth')
-rw-r--r--Auth/OpenID/Discover.php54
1 files changed, 24 insertions, 30 deletions
diff --git a/Auth/OpenID/Discover.php b/Auth/OpenID/Discover.php
index c19cf09..b244059 100644
--- a/Auth/OpenID/Discover.php
+++ b/Auth/OpenID/Discover.php
@@ -324,59 +324,53 @@ function Auth_OpenID_discoverWithYadis($uri, &$fetcher)
// OpenID 1.0 discovery on the same URL will help, so don't bother
// to catch it.
$openid_services = array();
-
- $http_response = null;
- $response = Services_Yadis_Yadis::discover($uri, $http_response,
- $fetcher);
-
+ $response = Services_Yadis_Yadis::discover($uri, $fetcher);
+ $yadis_url = $response->normalized_uri;
$yadis_services = array();
- $identity_url = $uri;
- if ($response) {
- $identity_url = $response->uri;
+ if ($response->isFailure()) {
+ return array($uri, array());
+ }
- if ($response->xrds) {
- $yadis_services =
- $response->xrds->services(
- array('filter_MatchesAnyOpenIDType'));
- }
+ $xrds =& Services_Yadis_XRDS::parseXRDS($response->response_text);
+
+ if ($xrds) {
+ $yadis_services =
+ $xrds->services(array('filter_MatchesAnyOpenIDType'));
}
if (!$yadis_services) {
- if ($response &&
- Services_Yadis_XRDS::parseXRDS($response->body) !== null) {
- return @Auth_OpenID_discoverWithoutYadis($uri,
- $fetcher);
- } else if (!$response) {
- return array($uri, array(), null);
+ if ($response->isXRDS()) {
+ return Auth_OpenID_discoverWithoutYadis($uri,
+ $fetcher);
}
// Try to parse the response as HTML to get OpenID 1.0/1.1
// <link rel="...">
$openid_services = Auth_OpenID_ServiceEndpoint::fromHTML(
- $identity_url,
- $response->body);
+ $yadis_url,
+ $response->response_text);
} else {
- $openid_services = Auth_OpenID_makeOpenIDEndpoints($identity_url,
+ $openid_services = Auth_OpenID_makeOpenIDEndpoints($yadis_url,
$yadis_services);
}
$openid_services = Auth_OpenID_getOPOrUserServices($openid_services);
- return array($identity_url, $openid_services, $response);
+ return array($yadis_url, $openid_services);
}
function _Auth_OpenID_discoverServiceList($uri, &$fetcher)
{
- list($url, $services, $resp) = Auth_OpenID_discoverWithYadis($uri,
- $fetcher);
+ list($url, $services) = Auth_OpenID_discoverWithYadis($uri,
+ $fetcher);
return $services;
}
function _Auth_OpenID_discoverXRIServiceList($uri, &$fetcher)
{
- list($url, $services, $resp) = _Auth_OpenID_discoverXRI($uri,
- $fetcher);
+ list($url, $services) = _Auth_OpenID_discoverXRI($uri,
+ $fetcher);
return $services;
}
@@ -385,7 +379,7 @@ function Auth_OpenID_discoverWithoutYadis($uri, &$fetcher)
$http_resp = @$fetcher->get($uri);
if ($http_resp->status != 200) {
- return array(null, array(), $http_resp);
+ return array($uri, array());
}
$identity_url = $http_resp->final_url;
@@ -396,7 +390,7 @@ function Auth_OpenID_discoverWithoutYadis($uri, &$fetcher)
$identity_url,
$http_resp->body);
- return array($identity_url, $openid_services, $http_resp);
+ return array($identity_url, $openid_services);
}
function _Auth_OpenID_discoverXRI($iname, &$fetcher)
@@ -418,7 +412,7 @@ function _Auth_OpenID_discoverXRI($iname, &$fetcher)
}
// FIXME: returned xri should probably be in some normal form
- return array($iname, $openid_services, null);
+ return array($iname, $openid_services);
}
function Auth_OpenID_discover($uri, &$fetcher)