Better error response messages
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
1577b9a1ca
commit
e367c341b7
1 changed files with 22 additions and 4 deletions
|
@ -8,7 +8,7 @@ use axum::{
|
||||||
use reqwest::StatusCode;
|
use reqwest::StatusCode;
|
||||||
|
|
||||||
use super::models::ErrorResponse;
|
use super::models::ErrorResponse;
|
||||||
use crate::error::APIError;
|
use crate::error::{APIError, ServiceError};
|
||||||
|
|
||||||
impl ErrorResponse {
|
impl ErrorResponse {
|
||||||
fn new(status: StatusCode, message: Option<String>) -> Self {
|
fn new(status: StatusCode, message: Option<String>) -> Self {
|
||||||
|
@ -31,13 +31,21 @@ impl IntoResponse for APIError {
|
||||||
sqlx::Error::RowNotFound => ErrorResponse::new(StatusCode::NOT_FOUND, None),
|
sqlx::Error::RowNotFound => ErrorResponse::new(StatusCode::NOT_FOUND, None),
|
||||||
_ => ErrorResponse::new(StatusCode::INTERNAL_SERVER_ERROR, None),
|
_ => ErrorResponse::new(StatusCode::INTERNAL_SERVER_ERROR, None),
|
||||||
},
|
},
|
||||||
APIError::Multipart(_) => ErrorResponse::new(StatusCode::INTERNAL_SERVER_ERROR, None),
|
APIError::Multipart(_) => ErrorResponse::new(
|
||||||
|
StatusCode::BAD_REQUEST,
|
||||||
|
Some("Invalid Multipart Form".to_string()),
|
||||||
|
),
|
||||||
APIError::BadRequest(err) => ErrorResponse::new(StatusCode::BAD_REQUEST, Some(err)),
|
APIError::BadRequest(err) => ErrorResponse::new(StatusCode::BAD_REQUEST, Some(err)),
|
||||||
APIError::Unauthorized(err) => ErrorResponse::new(StatusCode::UNAUTHORIZED, Some(err)),
|
APIError::Unauthorized(err) => ErrorResponse::new(StatusCode::UNAUTHORIZED, Some(err)),
|
||||||
APIError::Forbidden(err) => ErrorResponse::new(StatusCode::FORBIDDEN, Some(err)),
|
APIError::Forbidden(err) => ErrorResponse::new(StatusCode::FORBIDDEN, Some(err)),
|
||||||
APIError::NotFound(err) => ErrorResponse::new(StatusCode::NOT_FOUND, Some(err)),
|
APIError::NotFound(err) => ErrorResponse::new(StatusCode::NOT_FOUND, Some(err)),
|
||||||
APIError::Internal(err) => ErrorResponse::new(StatusCode::INTERNAL_SERVER_ERROR, Some(err)),
|
APIError::Internal(err) => {
|
||||||
APIError::Service(_) => ErrorResponse::new(StatusCode::INTERNAL_SERVER_ERROR, None),
|
ErrorResponse::new(StatusCode::INTERNAL_SERVER_ERROR, Some(err))
|
||||||
|
}
|
||||||
|
APIError::Service(err) => ErrorResponse::new(
|
||||||
|
StatusCode::INTERNAL_SERVER_ERROR,
|
||||||
|
Some(err.get_response_message()),
|
||||||
|
),
|
||||||
APIError::Query(_) => ErrorResponse::new(StatusCode::BAD_REQUEST, None),
|
APIError::Query(_) => ErrorResponse::new(StatusCode::BAD_REQUEST, None),
|
||||||
APIError::Decode(_) => ErrorResponse::new(StatusCode::BAD_REQUEST, None),
|
APIError::Decode(_) => ErrorResponse::new(StatusCode::BAD_REQUEST, None),
|
||||||
};
|
};
|
||||||
|
@ -45,3 +53,13 @@ impl IntoResponse for APIError {
|
||||||
(status, Json(res)).into_response()
|
(status, Json(res)).into_response()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ServiceError {
|
||||||
|
fn get_response_message(&self) -> String {
|
||||||
|
match self {
|
||||||
|
ServiceError::Reqwest(_) => "Reqwest error".to_string(),
|
||||||
|
ServiceError::Url(_) => "URL parse error".to_string(),
|
||||||
|
ServiceError::InvalidResponse(code) => format!("Invalid response code: {}", code),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue