diff --git a/src/servers/apis/routes.rs b/src/servers/apis/routes.rs index aed3ee19..e3d1ef44 100644 --- a/src/servers/apis/routes.rs +++ b/src/servers/apis/routes.rs @@ -8,7 +8,7 @@ use std::sync::Arc; use std::time::Duration; -use axum::http::{HeaderName, HeaderValue}; +use axum::http::HeaderName; use axum::response::Response; use axum::routing::get; use axum::{middleware, Router}; @@ -16,10 +16,9 @@ use hyper::Request; use torrust_tracker_configuration::AccessTokens; use tower_http::compression::CompressionLayer; use tower_http::propagate_header::PropagateHeaderLayer; -use tower_http::request_id::{MakeRequestId, RequestId, SetRequestIdLayer}; +use tower_http::request_id::{MakeRequestUuid, SetRequestIdLayer}; use tower_http::trace::{DefaultMakeSpan, TraceLayer}; use tracing::{Level, Span}; -use uuid::Uuid; use super::v1; use super::v1::context::health_check::handlers::health_check_handler; @@ -41,7 +40,7 @@ pub fn router(tracker: Arc, access_tokens: Arc) -> Router .layer(middleware::from_fn_with_state(state, v1::middlewares::auth::auth)) .route(&format!("{api_url_prefix}/health_check"), get(health_check_handler)) .layer(CompressionLayer::new()) - .layer(SetRequestIdLayer::x_request_id(RequestIdGenerator)) + .layer(SetRequestIdLayer::x_request_id(MakeRequestUuid)) .layer(PropagateHeaderLayer::new(HeaderName::from_static("x-request-id"))) .layer( TraceLayer::new_for_http() @@ -73,15 +72,5 @@ pub fn router(tracker: Arc, access_tokens: Arc) -> Router tracing::Level::INFO, "response", latency = %latency_ms, status = %status_code, request_id = %request_id); }), ) - .layer(SetRequestIdLayer::x_request_id(RequestIdGenerator)) -} - -#[derive(Clone, Default)] -struct RequestIdGenerator; - -impl MakeRequestId for RequestIdGenerator { - fn make_request_id(&mut self, _request: &Request) -> Option { - let id = HeaderValue::from_str(&Uuid::new_v4().to_string()).expect("UUID is a valid HTTP header value"); - Some(RequestId::new(id)) - } + .layer(SetRequestIdLayer::x_request_id(MakeRequestUuid)) } diff --git a/src/servers/health_check_api/server.rs b/src/servers/health_check_api/server.rs index 049f48d4..05ed605f 100644 --- a/src/servers/health_check_api/server.rs +++ b/src/servers/health_check_api/server.rs @@ -5,7 +5,7 @@ use std::net::SocketAddr; use std::time::Duration; -use axum::http::{HeaderName, HeaderValue}; +use axum::http::HeaderName; use axum::response::Response; use axum::routing::get; use axum::{Json, Router}; @@ -17,10 +17,9 @@ use serde_json::json; use tokio::sync::oneshot::{Receiver, Sender}; use tower_http::compression::CompressionLayer; use tower_http::propagate_header::PropagateHeaderLayer; -use tower_http::request_id::{MakeRequestId, RequestId, SetRequestIdLayer}; +use tower_http::request_id::{MakeRequestUuid, SetRequestIdLayer}; use tower_http::trace::{DefaultMakeSpan, TraceLayer}; use tracing::{Level, Span}; -use uuid::Uuid; use crate::bootstrap::jobs::Started; use crate::servers::health_check_api::handlers::health_check_handler; @@ -43,7 +42,7 @@ pub fn start( .route("/health_check", get(health_check_handler)) .with_state(register) .layer(CompressionLayer::new()) - .layer(SetRequestIdLayer::x_request_id(RequestIdGenerator)) + .layer(SetRequestIdLayer::x_request_id(MakeRequestUuid)) .layer(PropagateHeaderLayer::new(HeaderName::from_static("x-request-id"))) .layer( TraceLayer::new_for_http() @@ -75,7 +74,7 @@ pub fn start( tracing::Level::INFO, "response", latency = %latency_ms, status = %status_code, request_id = %request_id); }), ) - .layer(SetRequestIdLayer::x_request_id(RequestIdGenerator)); + .layer(SetRequestIdLayer::x_request_id(MakeRequestUuid)); let socket = std::net::TcpListener::bind(bind_to).expect("Could not bind tcp_listener to address."); let address = socket.local_addr().expect("Could not get local_addr from tcp_listener."); @@ -99,13 +98,3 @@ pub fn start( running } - -#[derive(Clone, Default)] -struct RequestIdGenerator; - -impl MakeRequestId for RequestIdGenerator { - fn make_request_id(&mut self, _request: &Request) -> Option { - let id = HeaderValue::from_str(&Uuid::new_v4().to_string()).expect("UUID is a valid HTTP header value"); - Some(RequestId::new(id)) - } -} diff --git a/src/servers/http/v1/routes.rs b/src/servers/http/v1/routes.rs index b972cf62..05cd3871 100644 --- a/src/servers/http/v1/routes.rs +++ b/src/servers/http/v1/routes.rs @@ -3,7 +3,7 @@ use std::net::SocketAddr; use std::sync::Arc; use std::time::Duration; -use axum::http::{HeaderName, HeaderValue}; +use axum::http::HeaderName; use axum::response::Response; use axum::routing::get; use axum::Router; @@ -11,10 +11,9 @@ use axum_client_ip::SecureClientIpSource; use hyper::Request; use tower_http::compression::CompressionLayer; use tower_http::propagate_header::PropagateHeaderLayer; -use tower_http::request_id::{MakeRequestId, RequestId, SetRequestIdLayer}; +use tower_http::request_id::{MakeRequestUuid, SetRequestIdLayer}; use tower_http::trace::{DefaultMakeSpan, TraceLayer}; use tracing::{Level, Span}; -use uuid::Uuid; use super::handlers::{announce, health_check, scrape}; use crate::core::Tracker; @@ -37,7 +36,7 @@ pub fn router(tracker: Arc, server_socket_addr: SocketAddr) -> Router { // Add extension to get the client IP from the connection info .layer(SecureClientIpSource::ConnectInfo.into_extension()) .layer(CompressionLayer::new()) - .layer(SetRequestIdLayer::x_request_id(RequestIdGenerator)) + .layer(SetRequestIdLayer::x_request_id(MakeRequestUuid)) .layer(PropagateHeaderLayer::new(HeaderName::from_static("x-request-id"))) .layer( TraceLayer::new_for_http() @@ -69,15 +68,5 @@ pub fn router(tracker: Arc, server_socket_addr: SocketAddr) -> Router { tracing::Level::INFO, "response", server_socket_addr= %server_socket_addr, latency = %latency_ms, status = %status_code, request_id = %request_id); }), ) - .layer(SetRequestIdLayer::x_request_id(RequestIdGenerator)) -} - -#[derive(Clone, Default)] -struct RequestIdGenerator; - -impl MakeRequestId for RequestIdGenerator { - fn make_request_id(&mut self, _request: &Request) -> Option { - let id = HeaderValue::from_str(&Uuid::new_v4().to_string()).expect("UUID is a valid HTTP header value"); - Some(RequestId::new(id)) - } + .layer(SetRequestIdLayer::x_request_id(MakeRequestUuid)) }