use thiserror::Error;
pub type BBResult<T> = Result<T, BBError>;
#[allow(dead_code)]
#[derive(Debug, Error, PartialEq, Eq)]
pub enum BBError {
#[error("Network/load error: {0}")]
NetworkError(String),
#[error("Token could not be parsed: {0}")]
TokenInvalid(String),
#[error("Invalid URL: {0}")]
URLInvalid(String),
#[error("Fatal error: {0}")]
Fatal(String),
#[error("JSON error: {0}")]
JSONError(String),
#[error("JWK data is invalid: {0}")]
JWKInvalid(String),
#[error("Decoding error: {0}")]
DecodeError(String),
#[error("Invalid claim value: {0}")]
ClaimInvalid(String),
#[error("Invalid signature")]
SignatureInvalid,
#[error("Error: {0}")]
Other(String),
#[error("Unknown/unspecified error")]
Unknown,
}
impl BBError {
pub fn name(&self) -> String {
match self {
Self::NetworkError(_) => "NetworkError".to_string(),
Self::TokenInvalid(_) => "TokenInvalid".to_string(),
Self::URLInvalid(_) => "URLInvalid".to_string(),
Self::JWKInvalid(_) => "JWKInvalid".to_string(),
Self::Fatal(_) => "Fatal".to_string(),
Self::DecodeError(_) => "DecodeError".to_string(),
Self::JSONError(_) => "JSONError".to_string(),
Self::ClaimInvalid(_) => "ClaimInvalid".to_string(),
Self::SignatureInvalid => "SignatureInvalid".to_string(),
Self::Other(_) => "Other".to_string(),
Self::Unknown => "Unknown".to_string(),
}
}
}
impl From<base64::DecodeError> for BBError {
fn from(err: base64::DecodeError) -> Self {
BBError::DecodeError(err.to_string())
}
}
impl From<serde_json::Error> for BBError {
fn from(err: serde_json::Error) -> Self {
BBError::JSONError(err.to_string())
}
}