pub mod feed;
use std::time::Duration;
use reqwest::header;
use crate::{constants, reqwest_ext::get_retry_strategy};
#[derive(Debug, Clone)]
pub struct CieloApi {
client: reqwest_middleware::ClientWithMiddleware,
}
impl CieloApi {
pub fn new(
api_key: &str,
min_retry_interval: Option<u64>,
max_retry_interval: Option<u64>,
max_retries: Option<u32>,
) -> Result<Self, crate::Error> {
let mut headers = header::HeaderMap::new();
let mut auth_value = header::HeaderValue::from_str(api_key).unwrap();
auth_value.set_sensitive(true);
headers.insert("X-API-KEY", auth_value);
let client = reqwest::Client::builder()
.default_headers(headers)
.timeout(Duration::from_secs(10))
.build()?;
let retry_s = get_retry_strategy(
min_retry_interval.unwrap_or(constants::MIN_RETRY_INTERVAL),
max_retry_interval.unwrap_or(constants::MAX_RETRY_INTERVAL),
max_retries.unwrap_or(constants::MAX_RETRIES),
);
let client = reqwest_middleware::ClientBuilder::new(client)
.with(retry_s)
.build();
Ok(Self { client })
}
}