use crate::{assignment_logger::NoopAssignmentLogger, AssignmentLogger, Client};
pub struct ClientConfig<'a> {
pub(crate) api_key: String,
pub(crate) base_url: String,
pub(crate) assignment_logger: Box<dyn AssignmentLogger + Send + Sync + 'a>,
}
impl<'a> ClientConfig<'a> {
pub fn from_api_key(api_key: impl Into<String>) -> Self {
ClientConfig {
api_key: api_key.into(),
base_url: ClientConfig::DEFAULT_BASE_URL.to_owned(),
assignment_logger: Box::new(NoopAssignmentLogger),
}
}
pub fn assignment_logger(
mut self,
assignment_logger: impl AssignmentLogger + Send + Sync + 'a,
) -> Self {
self.assignment_logger = Box::new(assignment_logger);
self
}
pub const DEFAULT_BASE_URL: &'static str = "https://fscdn.eppo.cloud/api";
pub fn base_url(mut self, base_url: impl Into<String>) -> Self {
self.base_url = base_url.into();
self
}
pub fn to_client(self) -> Client<'a> {
Client::new(self)
}
}