use std::time::Duration;
use futures_lite::future::block_on;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
struct User {
id: u64,
name: String,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
block_on(async move {
let client = ugi::Client::builder()
.base_url("https://api.example.com")?
.bearer_auth("token")?
.timeout(Duration::from_secs(10))
.build()?;
let req = client.get("/users/1").header("x-request-id", "demo-001")?;
let res = req.await?;
let user: User = res.json().await?;
println!("user#{} {}", user.id, user.name);
Ok(())
})
}