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())
}
}