@@ -25,20 +25,26 @@ pub async fn request_remote_datacenter_raw(
2525 . ok_or_else ( || errors:: Datacenter :: NotFound . build ( ) ) ?;
2626
2727 let client = rivet_pools:: reqwest:: client ( ) . await ?;
28- let url = dc. api_peer_url . join ( endpoint) ?;
29-
30- let mut request = client. request ( method, url) . headers ( headers) ;
28+ let mut url = dc. api_peer_url . join ( endpoint) ?;
3129
30+ // NOTE: We don't use reqwest's `.query` because it doesn't support list query parameters
3231 if let Some ( q) = query {
33- request = request . query ( q ) ;
32+ url . set_query ( Some ( & serde_html_form :: to_string ( q ) ? ) ) ;
3433 }
3534
35+ let mut request = client. request ( method, url) . headers ( headers) ;
36+
3637 if let Some ( b) = body {
3738 request = request. json ( b) ;
3839 }
3940
40- let res = request. send ( ) . await ?;
41- rivet_api_util:: reqwest_to_axum_response ( res) . await
41+ let res = request
42+ . send ( )
43+ . await
44+ . context ( "failed sending request to remote dc" ) ?;
45+ rivet_api_util:: reqwest_to_axum_response ( res)
46+ . await
47+ . context ( "failed parsing response from remote dc" )
4248}
4349
4450/// Generic function to make requests to a specific datacenter
@@ -59,20 +65,26 @@ where
5965 . ok_or_else ( || errors:: Datacenter :: NotFound . build ( ) ) ?;
6066
6167 let client = rivet_pools:: reqwest:: client ( ) . await ?;
62- let url = dc. api_peer_url . join ( endpoint) ?;
63-
64- let mut request = client. request ( method, url) . headers ( headers) ;
68+ let mut url = dc. api_peer_url . join ( endpoint) ?;
6569
70+ // NOTE: We don't use reqwest's `.query` because it doesn't support list query parameters
6671 if let Some ( q) = query {
67- request = request . query ( q ) ;
72+ url . set_query ( Some ( & serde_html_form :: to_string ( q ) ? ) ) ;
6873 }
6974
75+ let mut request = client. request ( method, url) . headers ( headers) ;
76+
7077 if let Some ( b) = body {
7178 request = request. json ( b) ;
7279 }
7380
74- let res = request. send ( ) . await ?;
75- rivet_api_util:: parse_response :: < T > ( res) . await
81+ let res = request
82+ . send ( )
83+ . await
84+ . context ( "failed sending request to remote dc" ) ?;
85+ rivet_api_util:: parse_response :: < T > ( res)
86+ . await
87+ . context ( "failed parsing response from remote dc" )
7688}
7789
7890/// Generic function to fanout requests to all datacenters and aggregate results
0 commit comments