use std::{fmt::Debug, ops::Deref};
use reqwest::{ClientBuilder, redirect::Policy};
use crate::errors::session::SessionError;
#[derive(Clone, Debug)]
pub(crate) struct Client(reqwest::Client);
impl Default for Client {
fn default() -> Self {
let req_client = reqwest::Client::builder()
.redirect(Policy::none())
.cookie_store(true)
.no_proxy()
.build()
.unwrap();
Client(req_client)
}
}
impl Client {
pub(super) fn custom<F>(custom_builder: F) -> Result<Self, SessionError>
where
F: Fn(&mut ClientBuilder),
{
let mut builder = reqwest::Client::builder();
custom_builder(&mut builder);
let client = builder
.redirect(Policy::none())
.cookie_store(true)
.build()?;
Ok(Client(client))
}
}
impl Deref for Client {
type Target = reqwest::Client;
fn deref(&self) -> &Self::Target {
&self.0
}
}