use io; use log; use net::dial; use net::http; use net::uri; use os; export fn main() void = { const client = http::newclient("Hare test client"); defer http::client_finish(&client); const target = match (uri::parse(os::args[1])) { case let u: uri::uri => yield u; case uri::invalid => log::fatal("Invalid URI"); }; defer uri::finish(&target); const req = http::get(&client, &target); const resp = match (http::do(&client, &req)) { case let err: http::error => log::fatal("HTTP error:", http::strerror(err)); case let resp: http::response => yield resp; }; defer http::request_finish(&req); log::printfln("HTTP/{}.{}: {} {}", resp.version.0, resp.version.1, resp.status, resp.reason); for (let i = 0z; i < len(resp.header); i += 1) { const (name, val) = resp.header[i]; log::printfln("{}: {}", name, val); }; const body = resp.body as *http::reader; io::copy(os::stdout, body)!; };