aico/
utils.rs

1#[cfg(not(target_arch = "riscv64"))]
2use rustls::crypto::aws_lc_rs;
3#[cfg(target_arch = "riscv64")]
4use rustls::crypto::ring;
5use std::{sync::LazyLock, time::Duration};
6
7pub fn setup_crypto_provider() {
8    static DONE: LazyLock<()> = LazyLock::new(|| {
9        if rustls::crypto::CryptoProvider::get_default().is_none() {
10            #[cfg(target_arch = "riscv64")]
11            let provider = ring::default_provider();
12
13            #[cfg(not(target_arch = "riscv64"))]
14            let provider = aws_lc_rs::default_provider();
15
16            let _ = provider.install_default();
17        }
18    });
19    *DONE;
20}
21
22pub fn setup_http_client() -> reqwest::Client {
23    setup_crypto_provider();
24
25    reqwest::Client::builder()
26        .connect_timeout(Duration::from_secs(10))
27        .pool_idle_timeout(Duration::from_secs(90))
28        .tcp_keepalive(Duration::from_secs(30))
29        .build()
30        .unwrap_or_else(|_| reqwest::Client::new())
31}