static function fromDiscoveryResult($discoveryResult) { if ($discoveryResult->isXRDS()) { return Auth_OpenID_ServiceEndpoint::fromXRDS($discoveryResult->normalized_uri, $discoveryResult->response_text); } else { return Auth_OpenID_ServiceEndpoint::fromHTML($discoveryResult->normalized_uri, $discoveryResult->response_text); } }
function Auth_OpenID_discoverWithoutYadis($uri, &$fetcher) { $http_resp = @$fetcher->get($uri); if ($http_resp->status != 200) { return array($uri, array()); } $identity_url = $http_resp->final_url; // Try to parse the response as HTML to get OpenID 1.0/1.1 <link // rel="..."> $openid_services = Auth_OpenID_ServiceEndpoint::fromHTML($identity_url, $http_resp->body); return array($identity_url, $openid_services); }
function Auth_OpenID_discoverWithYadis($uri, &$fetcher) { // Discover OpenID services for a URI. Tries Yadis and falls back // on old-style <link rel='...'> discovery if Yadis fails. // Might raise a yadis.discover.DiscoveryFailure if no document // came back for that URI at all. I don't think falling back to // 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); if ($response) { $identity_url = $response->uri; $openid_services = $response->xrds->services(array('filter_MatchesAnyOpenIDType')); } if (!$openid_services) { return @Auth_OpenID_discoverWithoutYadis($uri, $fetcher); } if (!$openid_services) { $body = $response->body; // Try to parse the response as HTML to get OpenID 1.0/1.1 // <link rel="..."> $service = Auth_OpenID_ServiceEndpoint::fromHTML($identity_url, $body); if ($service !== null) { $openid_services = array($service); } } else { $openid_services = Auth_OpenID_makeOpenIDEndpoints($response->uri, $openid_services); } return array($identity_url, $openid_services, $http_response); }
function Auth_OpenID_discoverWithoutYadis($uri, &$fetcher) { $http_resp = @$fetcher->get($uri); if ($http_resp->status != 200) { return array(null, array(), $http_resp); } $identity_url = $http_resp->final_url; // Try to parse the response as HTML to get OpenID 1.0/1.1 <link // rel="..."> $endpoint = new Auth_OpenID_ServiceEndpoint(); $service = $endpoint->fromHTML($identity_url, $http_resp->body); if ($service === null) { $openid_services = array(); } else { $openid_services = array($service); } return array($identity_url, $openid_services, $http_resp); }