58 lines
1.8 KiB
Rust
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,
|
|
))
|
|
}
|