use crate::{LobClient, constants::DEFAULT_BASE_URL};
pub struct LobClientBuilder;
impl LobClientBuilder {
pub fn client(self, client: reqwest::Client) -> LobClientBuilderWithClient {
LobClientBuilderWithClient { client }
}
}
pub struct LobClientBuilderWithClient {
client: reqwest::Client,
}
impl LobClientBuilderWithClient {
pub fn api_key<'a>(self, api_key: &'a str) -> LobClientBuilderWithApiKey<'a> {
LobClientBuilderWithApiKey {
client: self.client,
api_key,
}
}
}
pub struct LobClientBuilderWithApiKey<'a> {
client: reqwest::Client,
api_key: &'a str,
}
impl<'a> LobClientBuilderWithApiKey<'a> {
pub fn build(self) -> LobClient<'a, 'static> {
LobClient {
client: self.client,
api_key: self.api_key,
base_url: DEFAULT_BASE_URL,
}
}
pub fn build_with_base_url<'b>(self, base_url: &'b str) -> LobClient<'a, 'b> {
LobClient {
client: self.client,
api_key: self.api_key,
base_url,
}
}
}
impl<'a, 'b> LobClient<'a, 'b> {
pub fn builder() -> LobClientBuilder {
LobClientBuilder
}
}