useaxum::{middleware::from_fn, Router};usetower_http::{catch_panic::CatchPanicLayer,cors::CorsLayer};pubstructMiddlewareStack{cors:bool,
}implMiddlewareStack{pubfnnew()->Self{Self{ cors:false}}pubfnwith_cors(mutself)->Self{self.cors =true;self}pubfnapply(self, router: Router)-> Router{// Log every request and its response (method, path, status, latency)
// through doido's centralized logger. Added after `CatchPanicLayer` so
// it sits outermost and logs panic-recovered `500`s too.
letmut r = router
.layer(CatchPanicLayer::new()).layer(from_fn(crate::logging::log_requests));ifself.cors {
r = r.layer(CorsLayer::permissive());}
r
}}implDefault forMiddlewareStack{fndefault()->Self{Self::new()}}