Skip to main content

soma_openapi/http/
client.rs

1use std::time::Duration;
2
3use crate::error::OpenApiError;
4
5const CONNECT_TIMEOUT: Duration = Duration::from_secs(3);
6const PER_CALL_TIMEOUT: Duration = Duration::from_secs(20);
7
8pub(crate) fn base_builder() -> reqwest::ClientBuilder {
9    drop(rustls::crypto::ring::default_provider().install_default());
10    reqwest::Client::builder()
11        .redirect(reqwest::redirect::Policy::none())
12        .https_only(true)
13        .no_proxy()
14        .connect_timeout(CONNECT_TIMEOUT)
15        .timeout(PER_CALL_TIMEOUT)
16}
17
18pub fn build_dispatch_client() -> Result<reqwest::Client, OpenApiError> {
19    base_builder()
20        .build()
21        .map_err(|_| OpenApiError::ClientBuildFailed)
22}
23
24#[cfg(test)]
25pub(crate) fn build_loopback_test_client() -> reqwest::Client {
26    drop(rustls::crypto::ring::default_provider().install_default());
27    reqwest::Client::builder()
28        .redirect(reqwest::redirect::Policy::none())
29        .timeout(Duration::from_secs(5))
30        .build()
31        .expect("loopback test client")
32}