#[derive(Debug, PartialEq, Eq)]
pub enum Error {
InvalidJwt(InvalidJwt),
FetchFailed(String),
InvalidAuthHeader(InvalidAuthHeader),
JsonWebTokenError(String),
#[cfg(feature = "env")]
Env(Env),
FirebaseAuthStateNotFound,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum InvalidJwt {
MissingKid,
MatchingJwkNotFound,
Unspecified,
}
#[derive(Debug, PartialEq, Eq)]
pub enum InvalidAuthHeader {
BadCount,
MissingAuthHeader,
MissingBearer,
MissingBearerValue,
InvalidFormat(String),
}
#[cfg(feature = "env")]
#[derive(Debug, PartialEq, Eq)]
pub enum Env {
InvalidFirebaseCredentials(String),
InvalidFileFormat(String),
MissingEnvFile(String),
}
impl From<jsonwebtoken::errors::Error> for Error {
fn from(e: jsonwebtoken::errors::Error) -> Self {
Error::JsonWebTokenError(format!("Auth error occurred: {e}"))
}
}
impl From<std::io::Error> for Error {
fn from(e: std::io::Error) -> Self {
Error::Env(Env::InvalidFileFormat(e.to_string()))
}
}
impl From<std::env::VarError> for Error {
fn from(e: std::env::VarError) -> Self {
Error::Env(Env::InvalidFirebaseCredentials(e.to_string()))
}
}
impl From<serde_json::Error> for Error {
fn from(e: serde_json::Error) -> Self {
Error::Env(Env::InvalidFileFormat(e.to_string()))
}
}
impl From<dotenvy::Error> for Error {
fn from(e: dotenvy::Error) -> Self {
Error::Env(Env::MissingEnvFile(e.to_string()))
}
}
impl From<reqwest::Error> for Error {
fn from(e: reqwest::Error) -> Self {
Error::FetchFailed(format!("Auth error occurred: {e}"))
}
}