Skip to main content

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}