aboutsummaryrefslogtreecommitdiff
path: root/src/error.rs
diff options
context:
space:
mode:
authorMartin Fischer <martin@push-f.com>2021-01-22 21:34:35 +0100
committerMartin Fischer <martin@push-f.com>2021-01-22 21:36:53 +0100
commit4ba2d050bdf1a3c0070f3aa2331c82745611af1f (patch)
tree710b2d96dba397da5d5888f5099402f6271dc9fd /src/error.rs
parentb886de1afc0b90d7ca27db9d5c7dabddbe3d7ee0 (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.rs69
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