Add a route to server user details

This commit is contained in:
Valentin Tolmer 2021-06-30 20:47:01 +02:00 committed by nitnelave
parent b0c721bb28
commit 5a3332430f
2 changed files with 27 additions and 4 deletions

View File

@ -5,7 +5,7 @@ use crate::{
tcp_server::{error_to_http_response, AppState},
},
};
use actix_web::{web, HttpResponse};
use actix_web::{web, HttpRequest, HttpResponse};
pub(crate) fn error_to_api_response<T>(error: DomainError) -> ApiResult<T> {
ApiResult::Right(error_to_http_response(error))
@ -28,6 +28,23 @@ where
.unwrap_or_else(error_to_api_response)
}
async fn user_details_handler<Backend>(
data: web::Data<AppState<Backend>>,
request: HttpRequest,
) -> ApiResult<User>
where
Backend: TcpBackendHandler + BackendHandler + 'static,
{
let request = UserDetailsRequest {
user_id: request.match_info().get("user_id").unwrap().to_string(),
};
data.backend_handler
.get_user_details(request)
.await
.map(|res| ApiResult::Left(web::Json(res)))
.unwrap_or_else(error_to_api_response)
}
async fn create_user_handler<Backend>(
data: web::Data<AppState<Backend>>,
info: web::Json<CreateUserRequest>,
@ -59,9 +76,16 @@ where
.into()
});
cfg.app_data(json_config);
cfg.service(web::resource("/users").route(web::post().to(user_list_handler::<Backend>)));
cfg.service(
web::resource("/users/create").route(web::post().to(create_user_handler::<Backend>)),
web::resource("/user/{user_id}").route(web::get().to(user_details_handler::<Backend>)),
);
cfg.service(
web::scope("/users")
.guard(actix_web::guard::Header("content-type", "application/json"))
.service(web::resource("").route(web::post().to(user_list_handler::<Backend>)))
.service(
web::resource("/create").route(web::post().to(create_user_handler::<Backend>)),
),
);
}

View File

@ -68,7 +68,6 @@ fn http_config<Backend>(
auth_service::token_validator::<Backend>,
))
.wrap(auth_service::CookieToHeaderTranslatorFactory)
.guard(actix_web::guard::Header("content-type", "application/json"))
.configure(tcp_api::api_config::<Backend>),
)
// Serve the /pkg path with the compiled WASM app.