11use crate :: hyper_servers:: error:: TransportServerResult ;
22use crate :: mcp_http:: { McpAppState , McpHttpHandler } ;
33use axum:: routing:: get;
4+ use axum:: Extension ;
45use axum:: {
56 extract:: { Query , State } ,
67 response:: IntoResponse ,
@@ -24,9 +25,10 @@ pub async fn handle_streamable_http_get(
2425 headers : HeaderMap ,
2526 uri : Uri ,
2627 State ( state) : State < Arc < McpAppState > > ,
28+ Extension ( http_handler) : Extension < Arc < McpHttpHandler > > ,
2729) -> TransportServerResult < impl IntoResponse > {
2830 let request = McpHttpHandler :: create_request ( Method :: GET , uri, headers, None ) ;
29- let generic_res = McpHttpHandler :: handle_streamable_http ( request, state) . await ?;
31+ let generic_res = http_handler . handle_streamable_http ( request, state) . await ?;
3032 let ( parts, body) = generic_res. into_parts ( ) ;
3133 let resp = axum:: response:: Response :: from_parts ( parts, axum:: body:: Body :: new ( body) ) ;
3234 Ok ( resp)
@@ -36,12 +38,13 @@ pub async fn handle_streamable_http_post(
3638 headers : HeaderMap ,
3739 uri : Uri ,
3840 State ( state) : State < Arc < McpAppState > > ,
41+ Extension ( http_handler) : Extension < Arc < McpHttpHandler > > ,
3942 Query ( _params) : Query < HashMap < String , String > > ,
4043 payload : String ,
4144) -> TransportServerResult < impl IntoResponse > {
4245 let request =
4346 McpHttpHandler :: create_request ( Method :: POST , uri, headers, Some ( payload. as_str ( ) ) ) ;
44- let generic_res = McpHttpHandler :: handle_streamable_http ( request, state) . await ?;
47+ let generic_res = http_handler . handle_streamable_http ( request, state) . await ?;
4548 let ( parts, body) = generic_res. into_parts ( ) ;
4649 let resp = axum:: response:: Response :: from_parts ( parts, axum:: body:: Body :: new ( body) ) ;
4750 Ok ( resp)
@@ -51,9 +54,10 @@ pub async fn handle_streamable_http_delete(
5154 headers : HeaderMap ,
5255 uri : Uri ,
5356 State ( state) : State < Arc < McpAppState > > ,
57+ Extension ( http_handler) : Extension < Arc < McpHttpHandler > > ,
5458) -> TransportServerResult < impl IntoResponse > {
5559 let request = McpHttpHandler :: create_request ( Method :: DELETE , uri, headers, None ) ;
56- let generic_res = McpHttpHandler :: handle_streamable_http ( request, state) . await ?;
60+ let generic_res = http_handler . handle_streamable_http ( request, state) . await ?;
5761 let ( parts, body) = generic_res. into_parts ( ) ;
5862 let resp = axum:: response:: Response :: from_parts ( parts, axum:: body:: Body :: new ( body) ) ;
5963 Ok ( resp)
0 commit comments