1use std::error::Error;
2use std::time::{Duration, UNIX_EPOCH};
3
4use nano_get::{RedirectPolicy, Request};
5
6fn preview_text(text: &str, max_chars: usize) -> String {
7 let mut preview: String = text.chars().take(max_chars).collect();
8 if text.chars().count() > max_chars {
9 preview.push_str("...");
10 }
11 preview
12}
13
14fn main() -> Result<(), Box<dyn Error>> {
15 let url = "http://example.com";
16 let mut request = Request::get(url)?.with_redirect_policy(RedirectPolicy::follow(5));
17
18 request.add_header("Accept", "text/html,application/xhtml+xml")?;
19 request.add_header("Cache-Control", "max-age=0")?;
20 request.if_none_match("\"demo-etag\"")?;
21 request.if_modified_since(UNIX_EPOCH + Duration::from_secs(784_111_777))?;
22 request.range_bytes(Some(0), Some(255))?;
23
24 let response = request.execute()?;
27
28 println!("manual request to {url}");
29 println!(
30 "status: {} {}",
31 response.status_code, response.reason_phrase
32 );
33 println!("content-type: {:?}", response.header("content-type"));
34 println!("body preview: {}", preview_text(response.body_text()?, 80));
35
36 Ok(())
37}