use std::time::Duration;
use crate::{client::KobeClient, config::Config};
pub struct KobeApiClientBuilder {
config: Config,
}
impl KobeApiClientBuilder {
pub fn new() -> Self {
Self {
config: Config::mainnet(),
}
}
pub fn base_url(mut self, base_url: impl Into<String>) -> Self {
self.config.base_url = base_url.into();
self
}
pub fn timeout(mut self, timeout: Duration) -> Self {
self.config.timeout = timeout;
self
}
pub fn user_agent(mut self, user_agent: impl Into<String>) -> Self {
self.config.user_agent = user_agent.into();
self
}
pub fn retry(mut self, enabled: bool) -> Self {
self.config.retry_enabled = enabled;
self
}
pub fn max_retries(mut self, max_retries: u32) -> Self {
self.config.max_retries = max_retries;
self
}
pub fn build(self) -> KobeClient {
KobeClient::new(self.config)
}
}
impl Default for KobeApiClientBuilder {
fn default() -> Self {
Self::new()
}
}