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}