Files
hyper/examples/client.rs
Jonathan Reem d5c6f33c34 Update the client API to statically track headers and move constructors
The client Request now uses the same system as a server Response to track
the write status of headers, and the API has been updated accordingly.

Additionally, the Request constructors have been moved onto the Request object
instead of being top-level hyper functions, as this better namespaces the
client and Server.
2014-09-10 17:04:49 -07:00

46 lines
957 B
Rust

extern crate hyper;
use std::os;
use std::io::stdout;
use std::io::util::copy;
use hyper::Url;
use hyper::client::Request;
fn main() {
let args = os::args();
match args.len() {
2 => (),
_ => {
println!("Usage: client <url>");
return;
}
};
let url = match Url::parse(args[1].as_slice()) {
Ok(url) => {
println!("GET {}...", url)
url
},
Err(e) => fail!("Invalid URL: {}", e)
};
let req = match Request::get(url) {
Ok(req) => req,
Err(err) => fail!("Failed to connect: {}", err)
};
let mut res = req
.start().ok().expect("Error writing Headers.")
.send().ok().expect("Error sending Request.");
println!("Response: {}", res.status);
println!("{}", res.headers);
match copy(&mut res, &mut stdout()) {
Ok(..) => (),
Err(e) => fail!("Stream failure: {}", e)
};
}