function generateResult($base_url, $input_name, $id_name, $result_name, $success) { $input_url = $base_url . $input_name; // urlparse.urljoin(base_url, input_name) // If the name is null then we expect the protocol to fail, which // we represent by null if ($id_name === null) { // assert result_name is null return array($input_url, null); // DiscoveryFailure } $result = generateSample($result_name, $base_url); list($headers, $content) = explode("\n\n", $result, 2); $header_lines = explode("\n", $headers); $ctype = null; foreach ($header_lines as $header_line) { if (strpos($header_line, 'Content-Type:') === 0) { list($temp, $ctype) = explode(":", $header_line, 2); $ctype = trim($ctype); break; } } $id_url = $base_url . $id_name; $result = new Auth_Yadis_Yadis(); $result->uri = $id_url; if ($success) { $result->xrds_uri = $base_url . $result_name; } else { $result->xrds_uri = null; } $result->content_type = $ctype; $result->body = $content; return array($input_url, $result); }
function get($url, $headers = null) { $current_url = $url; while (true) { $parsed = parse_url($current_url); $path = substr($parsed['path'], 1); $data = generateSample($path, $this->base_url); if ($data === null) { return new Auth_Yadis_HTTPResponse($current_url, 404, array(), ''); } $response = mkResponse($data); if (in_array($response->status, array(301, 302, 303, 307))) { $current_url = $response->headers['location']; } else { $response->final_url = $current_url; return $response; } } }