diff options
Diffstat (limited to 'exes/webhook/src/handler/error.rs')
| -rw-r--r-- | exes/webhook/src/handler/error.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/exes/webhook/src/handler/error.rs b/exes/webhook/src/handler/error.rs new file mode 100644 index 0000000..d4fee07 --- /dev/null +++ b/exes/webhook/src/handler/error.rs @@ -0,0 +1,36 @@ +use hyper::{header::ToStrError, Body, Response, StatusCode}; + +pub struct WebhookError { + pub code: StatusCode, + pub message: String, +} + +impl WebhookError { + pub fn new(code: StatusCode, message: &str) -> WebhookError { + WebhookError { + code, + message: message.to_string(), + } + } +} + +impl Into<Response<Body>> for WebhookError { + fn into(self) -> Response<Body> { + Response::builder() + .status(self.code) + .body(self.message.into()) + .unwrap() + } +} + +impl From<hyper::Error> for WebhookError { + fn from(_: hyper::Error) -> Self { + WebhookError::new(StatusCode::BAD_REQUEST, "invalid request") + } +} + +impl From<ToStrError> for WebhookError { + fn from(_: ToStrError) -> Self { + WebhookError::new(StatusCode::BAD_REQUEST, "invalid request") + } +} |
