reqres 1.0.0

A pure Rust async HTTP client library based on Tokio with HTTP/2, connection pooling, proxy, cookie, compression, benchmarks, and comprehensive tests
Documentation
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()?;

    // GET 请求示例
    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));

    // POST 请求示例
    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(())
}