aboutsummaryrefslogtreecommitdiff
path: root/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/error.rs')
-rw-r--r--src/error.rs32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/error.rs b/src/error.rs
index db2fc86..5b82534 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -1,4 +1,4 @@
1use std::error::Error; 1use std::io;
2use axum::http::StatusCode; 2use axum::http::StatusCode;
3use axum::Json; 3use axum::Json;
4use axum::response::{IntoResponse, Response}; 4use axum::response::{IntoResponse, Response};
@@ -8,25 +8,41 @@ use crate::auth::AuthError;
8 8
9#[derive(Debug)] 9#[derive(Debug)]
10pub enum WebolError { 10pub enum WebolError {
11 Auth(AuthError),
12 Generic, 11 Generic,
13 Server(Box<dyn Error>), 12 Auth(AuthError),
13 DB(sqlx::Error),
14 IpParse(<std::net::IpAddr as std::str::FromStr>::Err),
15 BufferParse(std::num::ParseIntError),
16 Broadcast(io::Error),
14} 17}
15 18
16impl IntoResponse for WebolError { 19impl IntoResponse for WebolError {
17 fn into_response(self) -> Response { 20 fn into_response(self) -> Response {
18 let (status, error_message) = match self { 21 let (status, error_message) = match self {
19 WebolError::Auth(err) => err.get(), 22 Self::Auth(err) => {
20 WebolError::Generic => (StatusCode::INTERNAL_SERVER_ERROR, ""), 23 err.get()
21 WebolError::Server(err) => { 24 },
25 Self::Generic => (StatusCode::INTERNAL_SERVER_ERROR, ""),
26 Self::IpParse(err) => {
27 error!("server error: {}", err.to_string());
28 (StatusCode::INTERNAL_SERVER_ERROR, "Server Error")
29 },
30 Self::DB(err) => {
31 error!("server error: {}", err.to_string());
32 (StatusCode::INTERNAL_SERVER_ERROR, "Server Error")
33 },
34 Self::Broadcast(err) => {
35 error!("server error: {}", err.to_string());
36 (StatusCode::INTERNAL_SERVER_ERROR, "Server Error")
37 },
38 Self::BufferParse(err) => {
22 error!("server error: {}", err.to_string()); 39 error!("server error: {}", err.to_string());
23 (StatusCode::INTERNAL_SERVER_ERROR, "Server Error") 40 (StatusCode::INTERNAL_SERVER_ERROR, "Server Error")
24 }, 41 },
25
26 }; 42 };
27 let body = Json(json!({ 43 let body = Json(json!({
28 "error": error_message, 44 "error": error_message,
29 })); 45 }));
30 (status, body).into_response() 46 (status, body).into_response()
31 } 47 }
32} 48} \ No newline at end of file