pub(crate) use client::Client;
use reqwest::ClientBuilder;
use crate::{errors::session::SessionError, session::access_info::AccessInfos};
pub mod access_info;
mod client;
#[derive(Clone, Debug)]
pub struct Session {
pub(crate) client: Client,
pub(crate) is_login: bool,
pub(crate) access_infos: AccessInfos,
}
impl Session {
pub fn new() -> Self {
Session {
client: Client::default(),
is_login: false,
access_infos: AccessInfos::default(),
}
}
pub fn custom<F>(custom_builder: F) -> Result<Self, SessionError>
where
F: Fn(&mut ClientBuilder) + 'static,
{
let client = Client::custom(custom_builder)?;
Ok(Session {
client,
is_login: false,
access_infos: AccessInfos::default(),
})
}
}
impl Session {
pub fn is_login(&self) -> bool {
self.is_login
}
pub fn access_infos(&self) -> &AccessInfos {
&self.access_infos
}
pub fn set_access_infos(self, infos: AccessInfos) -> Self {
Session {
access_infos: infos,
..self
}
}
}
impl Default for Session {
fn default() -> Self {
Session::new()
}
}