forked from github-starred/komodo
refactor api router lcoation
This commit is contained in:
@@ -1,41 +0,0 @@
|
||||
use std::time::Instant;
|
||||
|
||||
use axum::{headers::ContentType, middleware, routing::post, Extension, Json, Router, TypedHeader};
|
||||
use reqwest::StatusCode;
|
||||
use resolver_api::Resolver;
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::{
|
||||
auth::{auth_request, RequestUserExtension},
|
||||
requests::api::ApiRequest,
|
||||
state::StateExtension,
|
||||
};
|
||||
|
||||
pub fn router() -> Router {
|
||||
Router::new()
|
||||
.route(
|
||||
"/",
|
||||
post(
|
||||
|state: StateExtension,
|
||||
Extension(user): RequestUserExtension,
|
||||
Json(request): Json<ApiRequest>| async move {
|
||||
let timer = Instant::now();
|
||||
let req_id = Uuid::new_v4();
|
||||
info!("/auth request {req_id} | {request:?}");
|
||||
let res = state
|
||||
.resolve_request(request, user)
|
||||
.await
|
||||
.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, format!("{e:?}")));
|
||||
if let Err(e) = &res {
|
||||
info!("/auth request {req_id} ERROR: {e:?}");
|
||||
}
|
||||
let res = res?;
|
||||
let elapsed = timer.elapsed();
|
||||
info!("/auth request {req_id} | resolve time: {elapsed:?}");
|
||||
debug!("/auth request {req_id} RESPONSE: {res}");
|
||||
Result::<_, (StatusCode, String)>::Ok((TypedHeader(ContentType::json()), res))
|
||||
},
|
||||
),
|
||||
)
|
||||
.layer(middleware::from_fn(auth_request))
|
||||
}
|
||||
@@ -4,7 +4,6 @@ extern crate log;
|
||||
use axum::{Extension, Router};
|
||||
use termination_signal::tokio::immediate_term_handle;
|
||||
|
||||
mod api;
|
||||
mod auth;
|
||||
mod config;
|
||||
mod db;
|
||||
@@ -23,7 +22,7 @@ async fn app() -> anyhow::Result<()> {
|
||||
|
||||
let app = Router::new()
|
||||
.nest("/auth", auth::router(&state))
|
||||
.nest("/api", api::router())
|
||||
.nest("/api", requests::api::router())
|
||||
.nest("/ws", ws::router())
|
||||
.layer(Extension(state));
|
||||
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
use std::time::Instant;
|
||||
|
||||
use axum::{Router, routing::post, Extension, Json, http::StatusCode, TypedHeader, headers::ContentType, middleware};
|
||||
use monitor_types::requests::api::{
|
||||
CreateLoginSecret, CreateServer, DeleteLoginSecret, DeleteServer, GetAllSystemStats,
|
||||
GetBasicSystemStats, GetCpuUsage, GetDiskUsage, GetDockerContainers, GetDockerImages,
|
||||
@@ -5,10 +8,11 @@ use monitor_types::requests::api::{
|
||||
GetSystemInformation, GetSystemProcesses, ListServers, PruneDockerContainers,
|
||||
PruneDockerImages, PruneDockerNetworks, RenameServer, UpdateServer,
|
||||
};
|
||||
use resolver_api::{derive::Resolver, Resolve, ResolveToString};
|
||||
use resolver_api::{derive::Resolver, Resolve, ResolveToString, Resolver};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::{auth::RequestUser, state::State};
|
||||
use crate::{auth::{RequestUser, RequestUserExtension, auth_request}, state::{State, StateExtension}};
|
||||
|
||||
mod secret;
|
||||
mod server;
|
||||
@@ -61,3 +65,32 @@ pub enum ApiRequest {
|
||||
// ==== DEPLOYMENT ====
|
||||
//
|
||||
}
|
||||
|
||||
pub fn router() -> Router {
|
||||
Router::new()
|
||||
.route(
|
||||
"/",
|
||||
post(
|
||||
|state: StateExtension,
|
||||
Extension(user): RequestUserExtension,
|
||||
Json(request): Json<ApiRequest>| async move {
|
||||
let timer = Instant::now();
|
||||
let req_id = Uuid::new_v4();
|
||||
info!("/auth request {req_id} | {request:?}");
|
||||
let res = state
|
||||
.resolve_request(request, user)
|
||||
.await
|
||||
.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, format!("{e:?}")));
|
||||
if let Err(e) = &res {
|
||||
info!("/auth request {req_id} ERROR: {e:?}");
|
||||
}
|
||||
let res = res?;
|
||||
let elapsed = timer.elapsed();
|
||||
info!("/auth request {req_id} | resolve time: {elapsed:?}");
|
||||
debug!("/auth request {req_id} RESPONSE: {res}");
|
||||
Result::<_, (StatusCode, String)>::Ok((TypedHeader(ContentType::json()), res))
|
||||
},
|
||||
),
|
||||
)
|
||||
.layer(middleware::from_fn(auth_request))
|
||||
}
|
||||
Reference in New Issue
Block a user