diff --git a/src/error.rs b/src/error.rs
new file mode 100644
index 0000000..eeba121
--- /dev/null
+++ b/src/error.rs
@@ -0,0 +1,60 @@
+// Copyright (C) 2023-2099 The crate authors.
+//
+// This program is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Affero General Public License as published by the
+// Free Software Foundation, either version 3 of the License, or (at your
+// option) any later version.
+//
+// This program is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+// for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+use std::error::Error as StdError;
+use std::str::Utf8Error;
+
+#[derive(Debug)]
+pub(crate) enum Error {
+ MethodMismatch,
+ InvalidToken,
+ InvalidContentType,
+ Hyper(hyper::Error),
+ SerdeJson(serde_json::Error),
+ Utf8(Utf8Error),
+}
+
+impl StdError for Error {}
+
+impl std::fmt::Display for Error {
+ fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
+ match self {
+ Error::MethodMismatch => write!(fmt, "the method is invalid"),
+ Error::InvalidToken => write!(fmt, "the token is invalid"),
+ Error::InvalidContentType => write!(fmt, "the content-type is invalid"),
+ Error::Hyper(e) => write!(fmt, "hyper error: {}", e),
+ Error::SerdeJson(e) => write!(fmt, "serde_json error: {}", e),
+ Error::Utf8(e) => write!(fmt, "Utf8 error: {}", e),
+ }
+ }
+}
+
+impl From for Error {
+ fn from(err: hyper::Error) -> Error {
+ Error::Hyper(err)
+ }
+}
+
+impl From for Error {
+ fn from(err: serde_json::Error) -> Error {
+ Error::SerdeJson(err)
+ }
+}
+
+impl From for Error {
+ fn from(err: Utf8Error) -> Error {
+ Error::Utf8(err)
+ }
+}
diff --git a/src/main.rs b/src/main.rs
index b82a846..5d29529 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -15,10 +15,13 @@
#![feature(let_chains)]
+mod error;
+
+use crate::error::Error;
+
use std::convert::Infallible;
-use std::error::Error as StdError;
use std::net::SocketAddr;
-use std::str::{from_utf8, Utf8Error};
+use std::str::from_utf8;
use gitlab::webhooks::WebHook;
use hyper::{
@@ -27,49 +30,6 @@ use hyper::{
};
use log::{debug, error};
-#[derive(Debug)]
-enum Error {
- MethodMismatch,
- InvalidToken,
- InvalidContentType,
- Hyper(hyper::Error),
- SerdeJson(serde_json::Error),
- Utf8(Utf8Error),
-}
-
-impl StdError for Error {}
-
-impl std::fmt::Display for Error {
- fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
- match self {
- Error::MethodMismatch => write!(fmt, "the method is invalid"),
- Error::InvalidToken => write!(fmt, "the token is invalid"),
- Error::InvalidContentType => write!(fmt, "the content-type is invalid"),
- Error::Hyper(e) => write!(fmt, "hyper error: {}", e),
- Error::SerdeJson(e) => write!(fmt, "serde_json error: {}", e),
- Error::Utf8(e) => write!(fmt, "Utf8 error: {}", e),
- }
- }
-}
-
-impl From for Error {
- fn from(err: hyper::Error) -> Error {
- Error::Hyper(err)
- }
-}
-
-impl From for Error {
- fn from(err: serde_json::Error) -> Error {
- Error::SerdeJson(err)
- }
-}
-
-impl From for Error {
- fn from(err: Utf8Error) -> Error {
- Error::Utf8(err)
- }
-}
-
fn error_res(e: E) -> Result, Infallible> {
error!("error response: {:?}", e);