use serde::Deserialize;
use std::fmt::{Display, Formatter};
const SESSION_TOKEN_EXPIRED: u16 = 5101;
const SESSION_TOKEN_NOT_FOUND: u16 = 5103;
pub fn need_refresh_token(code: u16) -> bool {
code == SESSION_TOKEN_EXPIRED || code == SESSION_TOKEN_NOT_FOUND
}
#[derive(Deserialize, Debug, Clone)]
pub struct ErrorCode {
pub code: u16,
pub message: String,
pub detail: Option<String>,
}
#[derive(Deserialize, Debug)]
pub struct ResponseWithErrorCode {
pub error: ErrorCode,
}
impl Display for ErrorCode {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match &self.detail {
Some(d) if !d.is_empty() => {
write!(f, "[{}]{}\n{}", self.code, self.message, d)
}
_ => write!(f, "[{}]{}", self.code, self.message,),
}
}
}