use std::fmt::Debug;
use reqwest::{ClientBuilder, IntoUrl, redirect::Policy};
use crate::errors::session::SessionError;
#[derive(Clone, Debug)]
pub struct Client(reqwest::Client);
impl Default for Client {
fn default() -> Self {
let req_client = reqwest::Client::builder()
.redirect(Policy::none())
.build()
.unwrap();
Client(req_client)
}
}
impl Client {
pub fn custom<F>(custom_builder: F) -> Result<Self, SessionError>
where
F: FnOnce(ClientBuilder) -> ClientBuilder,
{
let client = custom_builder(reqwest::Client::builder())
.redirect(Policy::none())
.build()?;
Ok(Client(client))
}
}
impl Client {
pub(crate) fn get<U: IntoUrl>(&self, url: U) -> reqwest::RequestBuilder {
self.0.get(url)
}
pub(crate) fn post<U: IntoUrl>(&self, url: U) -> reqwest::RequestBuilder {
self.0.post(url)
}
}