use std::time::Duration;
pub(crate) const CONNECT_TIMEOUT: Duration = Duration::from_secs(10);
pub(crate) const REQUEST_TIMEOUT: Duration = Duration::from_secs(60);
pub(crate) fn client_builder() -> reqwest::ClientBuilder {
reqwest::Client::builder()
.connect_timeout(CONNECT_TIMEOUT)
.timeout(REQUEST_TIMEOUT)
}
#[cfg(any(feature = "infisical", feature = "openbao", feature = "vault"))]
pub(crate) fn default_client() -> reqwest::Client {
client_builder()
.build()
.expect("building an HTTP client without custom TLS settings")
}
#[cfg(test)]
pub(crate) fn assert_bounded(client: &reqwest::Client) {
let debug = format!("{client:?}");
assert!(
debug.contains(&format!("{REQUEST_TIMEOUT:?}")),
"client has no request timeout: {debug}"
);
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn builder_bounds_connect_and_request_time() {
let builder = format!("{:?}", client_builder());
assert!(
builder.contains(&format!("connect_timeout: {CONNECT_TIMEOUT:?}")),
"{builder}"
);
assert_bounded(&client_builder().build().unwrap());
}
}