http_request/request/http_request/struct.rs
1use super::*;
2
3/// HTTP request data and execution state.
4///
5/// Holds everything needed to issue one outgoing request: method, URL,
6/// headers (single-value `HashMap<String, String>` — see
7/// `hyperlane-standards §8.1`), body, and per-request config (timeout,
8/// redirect policy, proxy, decode, etc.).
9///
10/// `HttpRequest` is constructed either via [`crate::RequestBuilder`] or
11/// directly from its public fields, then sent via [`HttpRequest::send`]
12/// (sync) or [`HttpRequest::send_async`].
13#[derive(Clone, Debug, Default, Getter, GetterMut)]
14pub struct HttpRequest {
15 /// HTTP method (`Method::Get` / `Method::Post` / ...).
16 #[get(type(clone))]
17 #[get_mut(skip)]
18 pub method: Method,
19 /// Target URL (string form, parsed on send).
20 #[get_mut(skip)]
21 pub url: String,
22 /// Request headers (single-value).
23 pub headers: HashMap<String, String>,
24 /// Request body.
25 #[get_mut(skip)]
26 pub body: Body,
27 /// Per-request config: timeout, redirects, proxy, decode, etc.
28 pub config: RequestConfig,
29 /// Internal scratch: redirect-loop tracking + TLS root store.
30 /// Private; only `HttpRequest` methods touch it.
31 pub tmp: Tmp,
32}