2022-10-14 03:59:21 -06:00
use atuin_common ::api ::{ ErrorResponse , IndexResponse } ;
2022-04-22 12:24:38 -06:00
use axum ::{ response ::IntoResponse , Json } ;
2021-04-20 10:07:11 -06:00
pub mod history ;
2023-03-20 03:26:54 -06:00
pub mod status ;
2021-04-20 10:07:11 -06:00
pub mod user ;
2022-06-06 02:58:19 -06:00
const VERSION : & str = env! ( " CARGO_PKG_VERSION " ) ;
pub async fn index ( ) -> Json < IndexResponse > {
let homage = r # ""Through the fathomless deeps of space swims the star turtle Great A'Tuin, bearing on its back the four giant elephants who carry on their shoulders the mass of the Discworld." -- Sir Terry Pratchett"# ;
Json ( IndexResponse {
homage : homage . to_string ( ) ,
version : VERSION . to_string ( ) ,
} )
2021-04-20 10:07:11 -06:00
}
2022-04-22 12:24:38 -06:00
impl < ' a > IntoResponse for ErrorResponseStatus < ' a > {
fn into_response ( self ) -> axum ::response ::Response {
( self . status , Json ( self . error ) ) . into_response ( )
}
}
pub struct ErrorResponseStatus < ' a > {
pub error : ErrorResponse < ' a > ,
pub status : http ::StatusCode ,
}
2022-10-07 21:33:07 -06:00
pub trait RespExt < ' a > {
fn with_status ( self , status : http ::StatusCode ) -> ErrorResponseStatus < ' a > ;
fn reply ( reason : & ' a str ) -> Self ;
}
impl < ' a > RespExt < ' a > for ErrorResponse < ' a > {
fn with_status ( self , status : http ::StatusCode ) -> ErrorResponseStatus < ' a > {
2022-04-22 12:24:38 -06:00
ErrorResponseStatus {
error : self ,
status ,
}
}
2022-10-07 21:33:07 -06:00
fn reply ( reason : & ' a str ) -> ErrorResponse {
2022-04-22 12:24:38 -06:00
Self {
reason : reason . into ( ) ,
}
}
}