chuanyue-service/system/src/router.rs
2024-09-23 14:20:42 +08:00

58 lines
1.8 KiB
Rust

use crate::controller;
use axum::body::Body;
use axum::http::Request;
use axum::routing::{get, post};
use axum::Router;
use tower_http::trace::TraceLayer;
pub(crate) fn init() -> Router {
let open = Router::new().route("/", get(|| async { "hello" }));
let auth: Router = Router::new()
.route(
"/account/google",
post(controller::account::authenticate_google),
)
.route(
"/account/sys",
post(controller::account::authenticate_with_password),
)
.route(
"/account/refresh-token",
post(controller::account::refresh_token)
)
.route(
"/feedback",
post(controller::feedback::add_feedback)
.get(controller::feedback::get_feedback_list_by_page),
)
.layer(axum::middleware::from_fn(
library::middleware::req_ctx::authenticate_ctx,
));
Router::new()
.nest("/", open)
.nest("/gm/v1", auth)
.layer(axum::middleware::from_fn(
library::middleware::req_log::handle,
))
.layer(axum::middleware::from_fn(library::middleware::cors::handle))
.layer(
TraceLayer::new_for_http().make_span_with(|request: &Request<Body>| {
let req_id = match request
.headers()
.get("x-request-id")
.and_then(|value| value.to_str().ok())
{
Some(v) => v.to_string(),
None => String::from("unknown"),
};
tracing::error_span!("request_id", id = req_id)
}),
)
.layer(axum::middleware::from_fn(
library::middleware::req_id::handle,
))
}