//! # API controller use actix_web::body::BoxBody; use actix_web::HttpResponse; use std::fmt::{Debug, Display, Formatter}; pub mod auth_controller; pub mod families_controller; pub mod members_controller; pub mod server_controller; pub mod users_controller; /// Custom error to ease controller writing #[derive(Debug)] pub struct HttpErr { err: anyhow::Error, } impl Display for HttpErr { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { std::fmt::Display::fmt(&self.err, f) } } impl actix_web::error::ResponseError for HttpErr { fn error_response(&self) -> HttpResponse { log::error!("Error while processing request! {}", self); HttpResponse::InternalServerError().body("Failed to execute request!") } } impl From for HttpErr { fn from(err: anyhow::Error) -> HttpErr { HttpErr { err } } } pub type HttpResult = Result;