mod flow;
mod server;
pub mod store;
use std::fmt;
pub use flow::{accept_token_direct, logout, run_auth_flow, show_status};
#[allow(unused_imports)]
pub use store::{delete_token, load_token, save_token};
#[derive(Debug)]
#[allow(dead_code)]
pub enum AuthError {
BrowserFailed,
Timeout,
InvalidToken,
StoreFailed(String),
Network(String),
Server(String)
}
impl fmt::Display for AuthError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::BrowserFailed => {
write!(f, "could not open browser; visit the URL manually")
}
Self::Timeout => {
write!(f, "timed out waiting for token (5 min limit)")
}
Self::InvalidToken => {
write!(f, "token is invalid or expired")
}
Self::StoreFailed(msg) => {
write!(f, "failed to store token: {msg}")
}
Self::Network(msg) => {
write!(f, "network error: {msg}")
}
Self::Server(msg) => {
write!(f, "local server error: {msg}")
}
}
}
}
impl std::error::Error for AuthError {}
#[cfg(test)]
mod tests;