use crate::Error;
#[derive(Clone, Debug)]
pub struct Client {
inner: isahc::HttpClient,
base: url::Url,
}
impl Client {
pub fn new<U>(base: U, token: Option<String>) -> Result<Self, Error>
where
U: AsRef<str>,
{
let mut builder = isahc::HttpClient::builder();
builder = builder.default_header("content-type", "application/json");
builder = builder.default_header("accept", "application/json");
if let Some(token) = token {
builder = builder.default_header("authorization", token);
}
let base = url::Url::parse(base.as_ref())?;
if base.cannot_be_a_base() {
Err(Error::BadBaseUrl)?;
}
Ok(Self {
inner: builder.build()?,
base,
})
}
}