use std::time::Duration;
use reqwest::header::{HeaderMap, HeaderName, HeaderValue};
#[derive(Default, Clone, Debug)]
pub struct RequestOptions {
pub timeout: Option<Duration>,
pub max_retries: Option<u32>,
pub extra_headers: HeaderMap,
pub idempotency_key: Option<String>,
}
impl RequestOptions {
pub fn new() -> Self {
Self::default()
}
pub fn timeout(mut self, t: Duration) -> Self {
self.timeout = Some(t);
self
}
pub fn max_retries(mut self, n: u32) -> Self {
self.max_retries = Some(n);
self
}
pub fn idempotency_key(mut self, key: impl Into<String>) -> Self {
self.idempotency_key = Some(key.into());
self
}
pub fn header(mut self, name: impl AsRef<str>, value: impl AsRef<str>) -> Self {
if let (Ok(n), Ok(v)) = (
HeaderName::from_bytes(name.as_ref().as_bytes()),
HeaderValue::from_str(value.as_ref()),
) {
self.extra_headers.insert(n, v);
}
self
}
}