5
5
//!
6
6
//! All the API routes have the `/api` prefix and the version number as the
7
7
//! first path segment. For example: `/api/v1/torrents`.
8
+ use std:: net:: SocketAddr ;
8
9
use std:: sync:: Arc ;
9
10
use std:: time:: Duration ;
10
11
@@ -35,7 +36,7 @@ use crate::servers::logging::Latency;
35
36
/// Add all API routes to the router.
36
37
#[ allow( clippy:: needless_pass_by_value) ]
37
38
#[ instrument( skip( tracker, access_tokens) ) ]
38
- pub fn router ( tracker : Arc < Tracker > , access_tokens : Arc < AccessTokens > ) -> Router {
39
+ pub fn router ( tracker : Arc < Tracker > , access_tokens : Arc < AccessTokens > , server_socket_addr : SocketAddr ) -> Router {
39
40
let router = Router :: new ( ) ;
40
41
41
42
let api_url_prefix = "/api" ;
@@ -68,7 +69,7 @@ pub fn router(tracker: Arc<Tracker>, access_tokens: Arc<AccessTokens>) -> Router
68
69
target: API_LOG_TARGET ,
69
70
tracing:: Level :: INFO , %method, %uri, %request_id, "request" ) ;
70
71
} )
71
- . on_response ( |response : & Response , latency : Duration , span : & Span | {
72
+ . on_response ( move |response : & Response , latency : Duration , span : & Span | {
72
73
let latency_ms = latency. as_millis ( ) ;
73
74
let status_code = response. status ( ) ;
74
75
let request_id = response
@@ -82,20 +83,20 @@ pub fn router(tracker: Arc<Tracker>, access_tokens: Arc<AccessTokens>) -> Router
82
83
if status_code. is_server_error ( ) {
83
84
tracing:: event!(
84
85
target: API_LOG_TARGET ,
85
- tracing:: Level :: ERROR , %latency_ms, %status_code, %request_id, "response" ) ;
86
+ tracing:: Level :: ERROR , %latency_ms, %status_code, %server_socket_addr , % request_id, "response" ) ;
86
87
} else {
87
88
tracing:: event!(
88
89
target: API_LOG_TARGET ,
89
- tracing:: Level :: INFO , %latency_ms, %status_code, %request_id, "response" ) ;
90
+ tracing:: Level :: INFO , %latency_ms, %status_code, %server_socket_addr , % request_id, "response" ) ;
90
91
}
91
92
} )
92
93
. on_failure (
93
- |failure_classification : ServerErrorsFailureClass , latency : Duration , _span : & Span | {
94
+ move |failure_classification : ServerErrorsFailureClass , latency : Duration , _span : & Span | {
94
95
let latency = Latency :: new ( LatencyUnit :: Millis , latency) ;
95
96
96
97
tracing:: event!(
97
98
target: API_LOG_TARGET ,
98
- tracing:: Level :: ERROR , %failure_classification, %latency, "response failed" ) ;
99
+ tracing:: Level :: ERROR , %failure_classification, %latency, %server_socket_addr , "response failed" ) ;
99
100
} ,
100
101
) ,
101
102
)
0 commit comments