@@ -25,20 +25,26 @@ pub async fn request_remote_datacenter_raw(
25
25
. ok_or_else ( || errors:: Datacenter :: NotFound . build ( ) ) ?;
26
26
27
27
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) ?;
31
29
30
+ // NOTE: We don't use reqwest's `.query` because it doesn't support list query parameters
32
31
if let Some ( q) = query {
33
- request = request . query ( q ) ;
32
+ url . set_query ( Some ( & serde_html_form :: to_string ( q ) ? ) ) ;
34
33
}
35
34
35
+ let mut request = client. request ( method, url) . headers ( headers) ;
36
+
36
37
if let Some ( b) = body {
37
38
request = request. json ( b) ;
38
39
}
39
40
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" )
42
48
}
43
49
44
50
/// Generic function to make requests to a specific datacenter
@@ -59,20 +65,26 @@ where
59
65
. ok_or_else ( || errors:: Datacenter :: NotFound . build ( ) ) ?;
60
66
61
67
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) ?;
65
69
70
+ // NOTE: We don't use reqwest's `.query` because it doesn't support list query parameters
66
71
if let Some ( q) = query {
67
- request = request . query ( q ) ;
72
+ url . set_query ( Some ( & serde_html_form :: to_string ( q ) ? ) ) ;
68
73
}
69
74
75
+ let mut request = client. request ( method, url) . headers ( headers) ;
76
+
70
77
if let Some ( b) = body {
71
78
request = request. json ( b) ;
72
79
}
73
80
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" )
76
88
}
77
89
78
90
/// Generic function to fanout requests to all datacenters and aggregate results
0 commit comments