use crate::to_http_status;
use serde_json::{json, Value};
use axum::{
Json, response::{
IntoResponse,
Response as HttpResponse
},
};
pub type AxumResponse = Result<Response, Response>;
pub type AxumResult<T> = Result<T, Response>;
pub enum Response {
Standard(u16, &'static str),
JsonData(u16, &'static str, &'static str, Value)
}
impl IntoResponse for Response {
fn into_response(self) -> HttpResponse {
match self {
Response::Standard(status, message) => {
let code = to_http_status(status);
let data = json!({
"status": code.as_u16(), "message": message
});
return (code, Json(data)).into_response()
},
Response::JsonData(status, message, data_name, data) => {
let code = to_http_status(status);
let data = json!({
"status": code.as_u16(),
"message": message, data_name: data
});
return (code, Json(data)).into_response()
}
}
}
}