use std::time::Duration;
#[derive(Clone, Copy, Debug)]
pub struct RetryPolicy {
pub max_attempts: u32,
pub base_delay: Duration,
pub max_delay: Duration,
}
impl Default for RetryPolicy {
fn default() -> Self {
Self {
max_attempts: 3,
base_delay: Duration::from_millis(200),
max_delay: Duration::from_secs(5),
}
}
}
#[derive(Clone, Debug)]
pub struct ClientOptions {
pub base_url: String,
pub auth: Option<crate::client::Auth>,
pub timeout: Duration,
pub connect_timeout: Duration,
pub user_agent: String,
pub retry_policy: RetryPolicy,
}
impl Default for ClientOptions {
fn default() -> Self {
Self {
base_url: "https://api.zotero.org/".to_owned(),
auth: None,
timeout: Duration::from_secs(30),
connect_timeout: Duration::from_secs(10),
user_agent: format!("zotero-rs/{}", env!("CARGO_PKG_VERSION")),
retry_policy: RetryPolicy::default(),
}
}
}