Skip to content

Commit 93e8ae4

Browse files
committed
Merge #718: Refactor: use tower_http::request_id::MakeRequestUuid
eb8478d refactor: [#714] use tower_http::request_id::MakeRequestUuid (Jose Celano) Pull request description: Instead of a custom request UUID generator. I did not know there was already an implementation for it when I implemented that. See: https://docs.rs/tower-http/latest/tower_http/request_id/struct.MakeRequestUuid.html ACKs for top commit: josecelano: ACK eb8478d Tree-SHA512: af605f267ab99db98b6f55885343328a7b77ec23275b3dc495a5aa6093ecae06b3f0e80c640e14c504fd40b3f6e8bdd6df2619f60785294827237aeb98262f88
2 parents c5f7abf + eb8478d commit 93e8ae4

File tree

3 files changed

+12
-45
lines changed

3 files changed

+12
-45
lines changed

src/servers/apis/routes.rs

+4-15
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,17 @@
88
use std::sync::Arc;
99
use std::time::Duration;
1010

11-
use axum::http::{HeaderName, HeaderValue};
11+
use axum::http::HeaderName;
1212
use axum::response::Response;
1313
use axum::routing::get;
1414
use axum::{middleware, Router};
1515
use hyper::Request;
1616
use torrust_tracker_configuration::AccessTokens;
1717
use tower_http::compression::CompressionLayer;
1818
use tower_http::propagate_header::PropagateHeaderLayer;
19-
use tower_http::request_id::{MakeRequestId, RequestId, SetRequestIdLayer};
19+
use tower_http::request_id::{MakeRequestUuid, SetRequestIdLayer};
2020
use tower_http::trace::{DefaultMakeSpan, TraceLayer};
2121
use tracing::{Level, Span};
22-
use uuid::Uuid;
2322

2423
use super::v1;
2524
use super::v1::context::health_check::handlers::health_check_handler;
@@ -41,7 +40,7 @@ pub fn router(tracker: Arc<Tracker>, access_tokens: Arc<AccessTokens>) -> Router
4140
.layer(middleware::from_fn_with_state(state, v1::middlewares::auth::auth))
4241
.route(&format!("{api_url_prefix}/health_check"), get(health_check_handler))
4342
.layer(CompressionLayer::new())
44-
.layer(SetRequestIdLayer::x_request_id(RequestIdGenerator))
43+
.layer(SetRequestIdLayer::x_request_id(MakeRequestUuid))
4544
.layer(PropagateHeaderLayer::new(HeaderName::from_static("x-request-id")))
4645
.layer(
4746
TraceLayer::new_for_http()
@@ -73,15 +72,5 @@ pub fn router(tracker: Arc<Tracker>, access_tokens: Arc<AccessTokens>) -> Router
7372
tracing::Level::INFO, "response", latency = %latency_ms, status = %status_code, request_id = %request_id);
7473
}),
7574
)
76-
.layer(SetRequestIdLayer::x_request_id(RequestIdGenerator))
77-
}
78-
79-
#[derive(Clone, Default)]
80-
struct RequestIdGenerator;
81-
82-
impl MakeRequestId for RequestIdGenerator {
83-
fn make_request_id<B>(&mut self, _request: &Request<B>) -> Option<RequestId> {
84-
let id = HeaderValue::from_str(&Uuid::new_v4().to_string()).expect("UUID is a valid HTTP header value");
85-
Some(RequestId::new(id))
86-
}
75+
.layer(SetRequestIdLayer::x_request_id(MakeRequestUuid))
8776
}

src/servers/health_check_api/server.rs

+4-15
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use std::net::SocketAddr;
66
use std::time::Duration;
77

8-
use axum::http::{HeaderName, HeaderValue};
8+
use axum::http::HeaderName;
99
use axum::response::Response;
1010
use axum::routing::get;
1111
use axum::{Json, Router};
@@ -17,10 +17,9 @@ use serde_json::json;
1717
use tokio::sync::oneshot::{Receiver, Sender};
1818
use tower_http::compression::CompressionLayer;
1919
use tower_http::propagate_header::PropagateHeaderLayer;
20-
use tower_http::request_id::{MakeRequestId, RequestId, SetRequestIdLayer};
20+
use tower_http::request_id::{MakeRequestUuid, SetRequestIdLayer};
2121
use tower_http::trace::{DefaultMakeSpan, TraceLayer};
2222
use tracing::{Level, Span};
23-
use uuid::Uuid;
2423

2524
use crate::bootstrap::jobs::Started;
2625
use crate::servers::health_check_api::handlers::health_check_handler;
@@ -43,7 +42,7 @@ pub fn start(
4342
.route("/health_check", get(health_check_handler))
4443
.with_state(register)
4544
.layer(CompressionLayer::new())
46-
.layer(SetRequestIdLayer::x_request_id(RequestIdGenerator))
45+
.layer(SetRequestIdLayer::x_request_id(MakeRequestUuid))
4746
.layer(PropagateHeaderLayer::new(HeaderName::from_static("x-request-id")))
4847
.layer(
4948
TraceLayer::new_for_http()
@@ -75,7 +74,7 @@ pub fn start(
7574
tracing::Level::INFO, "response", latency = %latency_ms, status = %status_code, request_id = %request_id);
7675
}),
7776
)
78-
.layer(SetRequestIdLayer::x_request_id(RequestIdGenerator));
77+
.layer(SetRequestIdLayer::x_request_id(MakeRequestUuid));
7978

8079
let socket = std::net::TcpListener::bind(bind_to).expect("Could not bind tcp_listener to address.");
8180
let address = socket.local_addr().expect("Could not get local_addr from tcp_listener.");
@@ -99,13 +98,3 @@ pub fn start(
9998

10099
running
101100
}
102-
103-
#[derive(Clone, Default)]
104-
struct RequestIdGenerator;
105-
106-
impl MakeRequestId for RequestIdGenerator {
107-
fn make_request_id<B>(&mut self, _request: &Request<B>) -> Option<RequestId> {
108-
let id = HeaderValue::from_str(&Uuid::new_v4().to_string()).expect("UUID is a valid HTTP header value");
109-
Some(RequestId::new(id))
110-
}
111-
}

src/servers/http/v1/routes.rs

+4-15
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,17 @@ use std::net::SocketAddr;
33
use std::sync::Arc;
44
use std::time::Duration;
55

6-
use axum::http::{HeaderName, HeaderValue};
6+
use axum::http::HeaderName;
77
use axum::response::Response;
88
use axum::routing::get;
99
use axum::Router;
1010
use axum_client_ip::SecureClientIpSource;
1111
use hyper::Request;
1212
use tower_http::compression::CompressionLayer;
1313
use tower_http::propagate_header::PropagateHeaderLayer;
14-
use tower_http::request_id::{MakeRequestId, RequestId, SetRequestIdLayer};
14+
use tower_http::request_id::{MakeRequestUuid, SetRequestIdLayer};
1515
use tower_http::trace::{DefaultMakeSpan, TraceLayer};
1616
use tracing::{Level, Span};
17-
use uuid::Uuid;
1817

1918
use super::handlers::{announce, health_check, scrape};
2019
use crate::core::Tracker;
@@ -37,7 +36,7 @@ pub fn router(tracker: Arc<Tracker>, server_socket_addr: SocketAddr) -> Router {
3736
// Add extension to get the client IP from the connection info
3837
.layer(SecureClientIpSource::ConnectInfo.into_extension())
3938
.layer(CompressionLayer::new())
40-
.layer(SetRequestIdLayer::x_request_id(RequestIdGenerator))
39+
.layer(SetRequestIdLayer::x_request_id(MakeRequestUuid))
4140
.layer(PropagateHeaderLayer::new(HeaderName::from_static("x-request-id")))
4241
.layer(
4342
TraceLayer::new_for_http()
@@ -69,15 +68,5 @@ pub fn router(tracker: Arc<Tracker>, server_socket_addr: SocketAddr) -> Router {
6968
tracing::Level::INFO, "response", server_socket_addr= %server_socket_addr, latency = %latency_ms, status = %status_code, request_id = %request_id);
7069
}),
7170
)
72-
.layer(SetRequestIdLayer::x_request_id(RequestIdGenerator))
73-
}
74-
75-
#[derive(Clone, Default)]
76-
struct RequestIdGenerator;
77-
78-
impl MakeRequestId for RequestIdGenerator {
79-
fn make_request_id<B>(&mut self, _request: &Request<B>) -> Option<RequestId> {
80-
let id = HeaderValue::from_str(&Uuid::new_v4().to_string()).expect("UUID is a valid HTTP header value");
81-
Some(RequestId::new(id))
82-
}
71+
.layer(SetRequestIdLayer::x_request_id(MakeRequestUuid))
8372
}

0 commit comments

Comments
 (0)