diff options
Diffstat (limited to 'src/error.rs')
-rw-r--r-- | src/error.rs | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/src/error.rs b/src/error.rs deleted file mode 100644 index fe998d0..0000000 --- a/src/error.rs +++ /dev/null @@ -1,69 +0,0 @@ -//! Provides the [`crate::Error`] type. - -use thiserror::Error; -use hyper::StatusCode; - -/// Encapsulates a status code and an error message. -#[derive(Error, Debug)] -#[error("SimpleError({code}, {message})")] -pub struct SimpleError { - pub code: StatusCode, - pub message: String, -} - -impl SimpleError { - /// Returns an HTTP response builder with the status code set to `self.code`. - pub fn response_builder(&self) -> hyper::http::response::Builder { - hyper::Response::builder().status(self.code) - } -} - -/// Error type for request handlers. -/// -/// All client errors in [`crate::request`] implement [`Into<Error::Simple>`]. -#[derive(Error, Debug)] -pub enum Error { - #[error("SimpleError({}, {})", .0.code, .0.message)] - Simple(#[from] SimpleError), - - #[error("ResponseError({})", .0.status())] - Response(hyper::Response<hyper::Body>), -} - -impl Error { - // some convenience methods - - pub fn simple(code: StatusCode, message: String) -> Self { - Error::Simple(SimpleError{code, message}) - } - - pub fn bad_request(message: String) -> Self { - Error::Simple(SimpleError{code: StatusCode::BAD_REQUEST, message}) - } - - pub fn not_found(message: String) -> Self { - Error::Simple(SimpleError{code: StatusCode::NOT_FOUND, message}) - } - - pub fn unauthorized(message: String) -> Self { - Error::Simple(SimpleError{code: StatusCode::UNAUTHORIZED, message}) - } - - pub fn internal(message: String) -> Self { - Error::Simple(SimpleError{code: StatusCode::INTERNAL_SERVER_ERROR, message}) - } - - pub fn method_not_allowed(message: String) -> Self { - Error::Simple(SimpleError{code: StatusCode::METHOD_NOT_ALLOWED, message}) - } -} - -macro_rules! impl_into_error_simple { - ($type:ident, $status:expr) => { - impl From<$type> for crate::error::Error { - fn from(err: $type) -> Self { - Self::Simple(crate::error::SimpleError{code: $status, message: format!("{}", err)}) - } - } - }; -}
\ No newline at end of file |