46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| #![deny(warnings)]
 | |
| extern crate hyper;
 | |
| 
 | |
| extern crate env_logger;
 | |
| 
 | |
| use std::env;
 | |
| use std::io;
 | |
| 
 | |
| use hyper::Client;
 | |
| use hyper::header::Connection;
 | |
| 
 | |
| fn main() {
 | |
|     env_logger::init().unwrap();
 | |
| 
 | |
|     let url = match env::args().nth(1) {
 | |
|         Some(url) => url,
 | |
|         None => {
 | |
|             println!("Usage: client <url>");
 | |
|             return;
 | |
|         }
 | |
|     };
 | |
| 
 | |
|     let client = match env::var("HTTP_PROXY") {
 | |
|         Ok(mut proxy) => {
 | |
|             // parse the proxy, message if it doesn't make sense
 | |
|             let mut port = 80;
 | |
|             if let Some(colon) = proxy.rfind(':') {
 | |
|                 port = proxy[colon + 1..].parse().unwrap_or_else(|e| {
 | |
|                     panic!("HTTP_PROXY is malformed: {:?}, port parse error: {}", proxy, e);
 | |
|                 });
 | |
|                 proxy.truncate(colon);
 | |
|             }
 | |
|             Client::with_http_proxy(proxy, port)
 | |
|         },
 | |
|         _ => Client::new()
 | |
|     };
 | |
| 
 | |
|     let mut res = client.get(&*url)
 | |
|         .header(Connection::close())
 | |
|         .send().unwrap();
 | |
| 
 | |
|     println!("Response: {}", res.status);
 | |
|     println!("Headers:\n{}", res.headers);
 | |
|     io::copy(&mut res, &mut io::stdout()).unwrap();
 | |
| }
 |