37 lines
1.4 KiB
Rust
37 lines
1.4 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("/feedback", post(controller::feedback::add_feedback).get(controller::feedback::get_feedback_list_by_page))
|
|
.layer(axum::middleware::from_fn(library::middleware::req_token::authenticate_access_token));
|
|
|
|
Router::new()
|
|
.nest("/", open)
|
|
.nest("/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))
|
|
}
|