summaryrefslogtreecommitdiff
path: root/exes/webhook/src/handler/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'exes/webhook/src/handler/error.rs')
-rw-r--r--exes/webhook/src/handler/error.rs36
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")
+ }
+}