|
1 | 1 | extern mod http;
|
2 | 2 | use http::client::RequestWriter;
|
| 3 | +use http::client::ResponseReader; |
3 | 4 | use http::method::Get;
|
4 | 5 | use http::headers::HeaderEnum;
|
5 | 6 | use std::os;
|
6 | 7 | use std::str;
|
7 | 8 | use std::io::Reader;
|
| 9 | +use std::io::net::tcp::TcpStream; |
| 10 | + |
| 11 | +// API Examples |
| 12 | +use http::client::api::{get, RequestArgs}; |
8 | 13 |
|
9 | 14 | fn main() {
|
10 | 15 | format!("{}", Get);
|
11 | 16 | let args = os::args();
|
12 | 17 | match args.len() {
|
13 | 18 | 0 => unreachable!(),
|
14 |
| - 2 => make_and_print_request(args[1]), |
| 19 | + 2 => get_example(args[1]), |
15 | 20 | _ => {
|
16 | 21 | println!("Usage: {} URL", args[0]);
|
17 | 22 | return;
|
18 | 23 | },
|
19 | 24 | };
|
20 | 25 | }
|
21 | 26 |
|
22 |
| -fn make_and_print_request(url: ~str) { |
23 |
| - let request = RequestWriter::new(Get, from_str(url).expect("Invalid URL :-(")); |
24 |
| - |
| 27 | +// NOTE(flaper87): Consider moving this to the |
| 28 | +// request sender and print it if built in debug |
| 29 | +// mode. |
| 30 | +fn debug_request(request: &RequestWriter<TcpStream>) { |
25 | 31 | println("[33;1mRequest[0m");
|
26 | 32 | println("[33;1m=======[0m");
|
27 | 33 | println("");
|
28 | 34 | println!("[1mURL:[0m {}", request.url.to_str());
|
29 | 35 | println!("[1mRemote address:[0m {:?}", request.remote_addr);
|
30 | 36 | println!("[1mMethod:[0m {}", request.method);
|
31 | 37 | println("[1mHeaders:[0m");
|
32 |
| - for header in request.headers.iter() { |
33 |
| - println!(" - {}: {}", header.header_name(), header.header_value()); |
34 |
| - } |
| 38 | +} |
35 | 39 |
|
| 40 | +// NOTE(flaper87): Consider moving this to the |
| 41 | +// request sender and print it if built in debug |
| 42 | +// mode. |
| 43 | +fn debug_response(response: &ResponseReader<TcpStream>) { |
36 | 44 | println("");
|
37 | 45 | println("[33;1mResponse[0m");
|
38 | 46 | println("[33;1m========[0m");
|
39 | 47 | println("");
|
40 |
| - let mut response = match request.read_response() { |
41 |
| - Ok(response) => response, |
42 |
| - Err(_request) => fail!("This example can progress no further with no response :-("), |
43 |
| - }; |
44 | 48 | println!("[1mStatus:[0m {}", response.status);
|
45 | 49 | println("[1mHeaders:[0m");
|
46 | 50 | for header in response.headers.iter() {
|
47 | 51 | println!(" - {}: {}", header.header_name(), header.header_value());
|
48 | 52 | }
|
| 53 | +} |
| 54 | + |
| 55 | +fn get_example(url: ~str) { |
| 56 | + let params = ~[(~"test", ~"value")]; |
| 57 | + let args = RequestArgs{params: Some(params), headers: None, data: None}; |
| 58 | + let response = get(url, Some(args)); |
| 59 | + |
| 60 | + let mut response = match response { |
| 61 | + Ok(response) => response, |
| 62 | + Err(_request) => fail!("This example can progress no further with no response :-("), |
| 63 | + }; |
| 64 | + |
| 65 | + debug_response(&response); |
| 66 | + |
| 67 | + print("\n"); |
| 68 | + println("Response:"); |
| 69 | + let body = response.read_to_end(); |
| 70 | + println(str::from_utf8_slice(body)); |
| 71 | +} |
| 72 | + |
| 73 | +fn make_and_print_request(url: ~str) { |
| 74 | + let request = RequestWriter::new(Get, from_str(url).expect("Invalid URL :-(")); |
| 75 | + |
| 76 | + debug_request(&request); |
| 77 | + for header in request.headers.iter() { |
| 78 | + println!(" - {}: {}", header.header_name(), header.header_value()); |
| 79 | + } |
| 80 | + |
| 81 | + let mut response = match request.read_response() { |
| 82 | + Ok(response) => response, |
| 83 | + Err(_request) => fail!("This example can progress no further with no response :-("), |
| 84 | + }; |
| 85 | + |
| 86 | + debug_response(&response); |
| 87 | + |
49 | 88 | println("[1mBody:[0m");
|
50 | 89 | let body = response.read_to_end();
|
51 | 90 | println(str::from_utf8_slice(body));
|
|
0 commit comments