use thiserror::Error;
#[derive(Error, Debug)]
pub enum OidcRequirementsError {
#[error("Provider metadata does not contain a token endpoint")]
MissingTokenEndpoint,
}
#[derive(Error, Debug)]
pub enum EncodingDecodingErrors {
#[error("Encoding error: {0}")]
EncodingError(#[from] serde_json::Error),
#[error("JSON WebToken Decoding error: {0}")]
JsonWebTokenDecodingError(#[from] jsonwebtoken::errors::Error),
}
#[derive(Error, Debug)]
pub enum DeviceError {
#[error("Device related request error: {0}")]
TokenRequest(#[from] reqwest::Error),
#[error("Device related oidc requirements error: {0}")]
TokenRequestRequirements(#[from] OidcRequirementsError),
#[error("Invalid signature request response")]
InvalidSignatureResponse,
#[error("Invalid response: {0}")]
InvalidResponse(String),
#[error("Device encoding error: {0}")]
EncodingError(#[from] serde_json::Error),
#[error("Device reading config error: {0}")]
ConfigReadError(#[from] std::io::Error),
#[error("Device config parsing error: {0}")]
ConfigParseError(#[from] serde_yml::Error),
}
#[derive(Error, Debug)]
pub enum OidcError {
#[error("OIDC related request error: {0}")]
RequestError(#[from] reqwest::Error),
#[error("JSON WebToken Decoding error: {0}")]
JsonWebTokenDecodingError(#[from] jsonwebtoken::errors::Error),
#[error("CIBA status check failed: {0}")]
CibaStatusCheckFailed(String),
#[error("CIBA status bad request: {0}")]
CibaStatusBadRequest(String),
#[error("CIBA authentication pending")]
CibaAuthenticationPending,
#[error("Token introspection failed: {0}")]
TokenIntrospectionFailed(String),
#[error("Token is not active")]
TokenNotActive,
#[error("Token identification failed: {0}")]
TokenIdentificationFailed(String),
#[error("OIDC requirements error: {0}")]
OIDCRequestRequirements(#[from] OidcRequirementsError),
}
#[derive(Error, Debug)]
pub enum WellKnownApplicationsError {
#[error("Well known applications request error: {0}")]
RequestError(#[from] reqwest::Error),
#[error("Well known applications decoding error: {0}")]
DecodingError(#[from] serde_json::Error),
#[error("Well known application not found")]
NotFound,
}