Allow converting AuthenticationError to ApiError
This commit is contained in:
parent
ac7f03db15
commit
578c4e237f
1 changed files with 22 additions and 1 deletions
|
@ -1,11 +1,14 @@
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::Query,
|
extract::Query,
|
||||||
|
http::StatusCode,
|
||||||
|
response::IntoResponse,
|
||||||
routing::{get, post},
|
routing::{get, post},
|
||||||
Form, Json, Router,
|
Form, Json, Router,
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use tracing::{event, instrument, Level};
|
use tracing::{event, instrument, Level};
|
||||||
|
|
||||||
|
use crate::auth::AuthenticationError;
|
||||||
use crate::secrets::Password;
|
use crate::secrets::Password;
|
||||||
|
|
||||||
#[instrument]
|
#[instrument]
|
||||||
|
@ -21,11 +24,29 @@ pub async fn run() -> color_eyre::Result<()> {
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
|
||||||
struct ApiError {
|
struct ApiError {
|
||||||
|
#[serde(skip_serializing)]
|
||||||
|
status: StatusCode,
|
||||||
error: String,
|
error: String,
|
||||||
message: String,
|
message: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
type ApiResult<T> = Result<T, Json<ApiError>>;
|
impl From<AuthenticationError> for ApiError {
|
||||||
|
fn from(err: AuthenticationError) -> Self {
|
||||||
|
Self {
|
||||||
|
status: StatusCode::UNAUTHORIZED,
|
||||||
|
error: "authentication-failed".to_owned(),
|
||||||
|
message: err.to_string(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl IntoResponse for ApiError {
|
||||||
|
fn into_response(self) -> axum::response::Response {
|
||||||
|
(self.status, Json(self)).into_response()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type ApiResult<T> = Result<T, ApiError>;
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
|
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
|
||||||
struct ApiVersion {
|
struct ApiVersion {
|
||||||
|
|
Loading…
Reference in a new issue