use reqres::Client;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("=== reqres v0.2.0 HTTP Client Demo ===\n");
let client = Client::new()?;
println!("Sending GET request to httpbin.org...");
match client.get("http://httpbin.org/get").await {
Ok(response) => {
println!("✓ GET request successful!");
println!(" Status: {} {}", response.status(), response.status_text);
println!(" Headers:");
for (key, value) in &response.headers {
println!(" {}: {}", key, value);
}
println!("\n Body preview (first 500 chars):");
let body_text = response.text().unwrap_or_default();
let body_preview = if body_text.len() > 500 {
&body_text[..500]
} else {
&body_text
};
println!("{}", body_preview);
}
Err(e) => {
eprintln!("✗ GET request failed: {}", e);
}
}
println!("\n{}\n", &"=".repeat(50));
println!("Sending POST request to httpbin.org...");
let post_body = r#"{"name": "reqres", "version": "0.2.0"}"#;
match client.post("http://httpbin.org/post", post_body).await {
Ok(response) => {
println!("✓ POST request successful!");
println!(" Status: {} {}", response.status(), response.status_text);
println!("\n Body preview (first 500 chars):");
let body_text = response.text().unwrap_or_default();
let body_preview = if body_text.len() > 500 {
&body_text[..500]
} else {
&body_text
};
println!("{}", body_preview);
}
Err(e) => {
eprintln!("✗ POST request failed: {}", e);
}
}
println!("\n=== Demo completed ===");
Ok(())
}