diff options
author | Martin Fischer <martin@push-f.com> | 2021-01-22 21:34:35 +0100 |
---|---|---|
committer | Martin Fischer <martin@push-f.com> | 2021-01-22 21:36:53 +0100 |
commit | 4ba2d050bdf1a3c0070f3aa2331c82745611af1f (patch) | |
tree | 710b2d96dba397da5d5888f5099402f6271dc9fd /src/error.rs | |
parent | b886de1afc0b90d7ca27db9d5c7dabddbe3d7ee0 (diff) |
completely ditch Sputnik's general Error type
Users also want to short-circuit error types from other crates but they
cannot define a From conversion between two foreign types.
Sputnik's error type also didn't allow for proper error logging.
bump version to 0.2.3
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 |