1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
use serde::{Deserialize, Serialize}; use std::error::Error; use std::fmt::Display; #[derive(Debug)] pub enum KeycloakError { ReqwestFailure(reqwest::Error), HttpFailure { status: u16, body: Option<KeycloakHttpError>, text: String, }, } #[derive(Debug, Deserialize, Serialize)] pub struct KeycloakHttpError { pub error: Option<String>, #[serde(rename = "errorMessage")] pub error_message: Option<String>, } impl From<reqwest::Error> for KeycloakError { fn from(value: reqwest::Error) -> Self { KeycloakError::ReqwestFailure(value) } } impl Error for KeycloakError { fn description(&self) -> &str { "keycloak error" } fn cause(&self) -> Option<&dyn Error> { None } } impl Display for KeycloakError { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "keycloak error") } }