backend/keycloak_api/
errors.rs

1//! Keycloak API errors
2
3use std::{
4    error::Error,
5    fmt::{self, Display, Formatter},
6};
7
8#[derive(Debug, Clone)]
9pub enum KeycloakApiError {
10    Reqwest(String),
11    Other(String),
12}
13
14impl Display for KeycloakApiError {
15    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
16        match self {
17            Self::Reqwest(err) => write!(f, "Reqwest error: {err}"),
18            Self::Other(err) => write!(f, "Other error: {err}"),
19        }
20    }
21}
22
23impl Error for KeycloakApiError {}
24
25impl From<reqwest::Error> for KeycloakApiError {
26    fn from(err: reqwest::Error) -> Self {
27        log::debug!("Reqwest error: {err}");
28        Self::Reqwest(err.to_string())
29    }
30}
31
32impl From<url::ParseError> for KeycloakApiError {
33    fn from(err: url::ParseError) -> Self {
34        log::debug!("ParseError error: {err}");
35        Self::Other(err.to_string())
36    }
37}
38
39impl From<actix_http::header::InvalidHeaderValue> for KeycloakApiError {
40    fn from(err: actix_http::header::InvalidHeaderValue) -> Self {
41        log::debug!("InvalidHeaderValue error: {err}");
42        Self::Other(err.to_string())
43    }
44}
45
46impl From<serde_json::Error> for KeycloakApiError {
47    fn from(err: serde_json::Error) -> Self {
48        log::debug!("serde_json error: {err}");
49        Self::Other(err.to_string())
50    }
51}