@@ -38,7 +38,7 @@ pub fn routes(outbound_manager: ThreadSafeOutboundManager) -> Router<Arc<AppStat
3838 . route ( "/healthcheck" , get ( get_proxy_delay) )
3939 . layer ( middleware:: from_fn_with_state (
4040 state. clone ( ) ,
41- find_provider_proxy_by_name ,
41+ find_proxy_provider_proxy_by_name ,
4242 ) )
4343 . with_state ( state. clone ( ) ) ,
4444 )
@@ -72,21 +72,25 @@ async fn get_providers(State(state): State<ProviderState>) -> impl IntoResponse
7272 axum:: response:: Json ( res)
7373}
7474
75+ #[ derive( Deserialize ) ]
76+ struct ProviderNamePath {
77+ provider_name : String ,
78+ }
7579async fn find_proxy_provider_by_name (
7680 State ( state) : State < ProviderState > ,
77- Path ( name ) : Path < String > ,
81+ Path ( ProviderNamePath { provider_name } ) : Path < ProviderNamePath > ,
7882 mut req : Request < axum:: body:: Body > ,
7983 next : Next ,
8084) -> Response {
8185 let outbound_manager = state. outbound_manager . clone ( ) ;
82- match outbound_manager. get_proxy_provider ( & name ) {
86+ match outbound_manager. get_proxy_provider ( & provider_name ) {
8387 Some ( provider) => {
8488 req. extensions_mut ( ) . insert ( provider) ;
8589 next. run ( req) . await
8690 }
8791 _ => (
8892 StatusCode :: NOT_FOUND ,
89- format ! ( "proxy provider {} not found" , name ) ,
93+ format ! ( "proxy provider {} not found" , provider_name ) ,
9094 )
9195 . into_response ( ) ,
9296 }
@@ -126,16 +130,19 @@ async fn provider_healthcheck(
126130 ( StatusCode :: ACCEPTED , "provider healthcheck" )
127131}
128132
129- async fn find_provider_proxy_by_name (
133+ #[ derive( Deserialize ) ]
134+ struct ProviderProxyPath {
135+ proxy_name : String ,
136+ }
137+ async fn find_proxy_provider_proxy_by_name (
130138 Extension ( provider) : Extension < ThreadSafeProxyProvider > ,
131- Path ( params ) : Path < HashMap < String , String > > ,
139+ Path ( ProviderProxyPath { proxy_name } ) : Path < ProviderProxyPath > ,
132140 mut req : Request < axum:: body:: Body > ,
133141 next : Next ,
134142) -> Response {
135- let proxy = provider. read ( ) . await . proxies ( ) . await ;
136- let proxy = proxy
137- . iter ( )
138- . find ( |x| Some ( & x. name ( ) . to_string ( ) ) == params. get ( "proxy_name" ) ) ;
143+ let provider = provider. read ( ) . await ;
144+ let proxies = provider. proxies ( ) . await ;
145+ let proxy = proxies. iter ( ) . find ( |x| x. name ( ) == proxy_name) ;
139146
140147 if let Some ( proxy) = proxy {
141148 req. extensions_mut ( ) . insert ( proxy. clone ( ) ) ;
@@ -145,8 +152,8 @@ async fn find_provider_proxy_by_name(
145152 StatusCode :: NOT_FOUND ,
146153 format ! (
147154 "proxy {} not found in provider {}" ,
148- params . get ( " proxy_name" ) . unwrap ( ) ,
149- provider. read ( ) . await . name( )
155+ proxy_name,
156+ provider. name( )
150157 ) ,
151158 )
152159 . into_response ( )
0 commit comments