use bytes::Bytes; use http::Method; use reqwest::header::HeaderMap; use serde::Serialize; use serde_json::Value; use std::time::Duration; #[derive(Debug, Clone)] pub struct Request { pub method: Method, pub url: String, pub headers: HeaderMap, pub body: Option, pub timeout: Option, } impl Request { pub fn new(method: Method, url: String) -> Self { Self { method, url, headers: HeaderMap::new(), body: None, timeout: None, } } pub fn with_json(mut self, body: &T) -> Self { self.body = serde_json::to_value(body).ok(); self } } #[derive(Debug, Clone)] pub struct Response { pub status: http::StatusCode, pub headers: HeaderMap, pub body: Bytes, }