@@ -19,13 +19,12 @@ use axum::{
19
19
use colored:: Colorize ;
20
20
use sentry_tower:: SentryHttpLayer ;
21
21
use serde_json:: json;
22
- use sha1 :: Digest ;
22
+ use sha2 :: Digest ;
23
23
use std:: { net:: IpAddr , sync:: Arc , time:: Instant } ;
24
24
use tokio:: sync:: RwLock ;
25
25
use tower:: Layer ;
26
26
use tower_http:: {
27
27
catch_panic:: CatchPanicLayer , cors:: CorsLayer , normalize_path:: NormalizePathLayer ,
28
- trace:: TraceLayer ,
29
28
} ;
30
29
use utoipa:: openapi:: security:: { ApiKey , ApiKeyValue , SecurityScheme } ;
31
30
use utoipa_axum:: router:: OpenApiRouter ;
@@ -50,7 +49,7 @@ fn handle_panic(_err: Box<dyn std::any::Any + Send + 'static>) -> Response<Body>
50
49
. unwrap ( )
51
50
}
52
51
53
- fn handle_request ( req : & Request < Body > , _span : & tracing :: Span ) {
52
+ async fn handle_request ( req : Request < Body > , next : Next ) -> Result < Response , StatusCode > {
54
53
let ip = extract_ip ( req. headers ( ) )
55
54
. map ( |ip| ip. to_string ( ) )
56
55
. unwrap_or_else ( || "unknown" . to_string ( ) ) ;
@@ -70,13 +69,15 @@ fn handle_request(req: &Request<Body>, _span: &tracing::Span) {
70
69
format!( "({})" , ip) . bright_black( ) ,
71
70
) ,
72
71
) ;
72
+
73
+ Ok ( next. run ( req) . await )
73
74
}
74
75
75
76
async fn handle_etag ( req : Request , next : Next ) -> Result < Response , StatusCode > {
76
77
let if_none_match = req. headers ( ) . get ( "If-None-Match" ) . cloned ( ) ;
77
78
78
79
let response = next. run ( req) . await ;
79
- let mut hash = sha1 :: Sha1 :: new ( ) ;
80
+ let mut hash = sha2 :: Sha256 :: new ( ) ;
80
81
81
82
let ( mut parts, body) = response. into_parts ( ) ;
82
83
let body_bytes = axum:: body:: to_bytes ( body, usize:: MAX ) . await . unwrap ( ) ;
@@ -202,7 +203,7 @@ async fn main() {
202
203
} )
203
204
. layer ( CatchPanicLayer :: custom ( handle_panic) )
204
205
. layer ( CorsLayer :: very_permissive ( ) )
205
- . layer ( TraceLayer :: new_for_http ( ) . on_request ( handle_request) )
206
+ . layer ( axum :: middleware :: from_fn ( handle_request) )
206
207
. route_layer ( axum:: middleware:: from_fn ( handle_etag) )
207
208
. route_layer ( SentryHttpLayer :: with_transaction ( ) )
208
209
. with_state ( state. clone ( ) ) ;
0 commit comments