use std::{error::Error, fmt::Display};
use crate::HttpError;
#[derive(Debug)]
pub struct AnyhowHttpError(anyhow::Error);
impl Error for AnyhowHttpError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
self.0.source()
}
}
impl Display for AnyhowHttpError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
Display::fmt(&self.0, f)
}
}
impl HttpError for AnyhowHttpError {
fn log(&self) {
error!("{:?}", self.0);
}
#[cfg(feature = "hide-anyhow")]
fn reason(&self) -> String {
"Server error".to_string()
}
}
impl From<anyhow::Error> for DynHttpError {
fn from(value: anyhow::Error) -> Self {
DynHttpError {
inner: Box::new(AnyhowHttpError(value)),
}
}
}