From fe7eb7e3923677c97c99c2f98fde7d2921b5621a Mon Sep 17 00:00:00 2001 From: shockrah Date: Tue, 31 Mar 2020 17:04:01 -0700 Subject: [PATCH] new error responder --- server/src/err.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 server/src/err.rs diff --git a/server/src/err.rs b/server/src/err.rs new file mode 100644 index 0000000..bf8a78e --- /dev/null +++ b/server/src/err.rs @@ -0,0 +1,32 @@ +use std::{error, fmt}; +use rocket::response::{self, Responder, Response}; +use rocket::http::Status; +use rocket::request::Request; + + +#[derive(Debug, Clone)] +pub struct DbResponse { + err_msg: &'static str +} + +pub type DbError = std::result::Result; + + +impl fmt::Display for DbResponse { + fn fmt(&self, f:&mut fmt::Formatter) -> fmt::Result { + write!(f, "Database error") + } +} +impl error::Error for DbResponse { + fn source(&self) -> Option<&(dyn error::Error + 'static)> { + None + } +} +impl<'r> Responder<'r> for DbResponse { + fn respond_to(self, _:&Request) -> response::Result<'r> { + Response::build() + .status(Status::InternalServerError) + .raw_header("db-error", self.err_msg) + .ok() + } +}