Skip to content

Commit 7f08502

Browse files
authored
fix: client URL parsing (#14)
1 parent ced99e7 commit 7f08502

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

relay_client/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ tokio-stream = "0.1"
2121
tokio-util = "0.7"
2222
pin-project = "1.0"
2323
chrono = { version = "0.4", default-features = false, features = ["alloc", "std"] }
24+
url = "2.3"

relay_client/src/errors.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ pub enum RequestBuildError {
2929
#[error("Failed to add request headers")]
3030
Headers,
3131

32+
#[error("Failed to parse connection URL: {0}")]
33+
Url(#[from] url::ParseError),
34+
3235
#[error("Failed to create websocket request: {0}")]
3336
Other(WsError),
3437
}

relay_client/src/lib.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use {
77
},
88
serde::Serialize,
99
tokio_tungstenite::tungstenite::{client::IntoClientRequest, http},
10+
url::Url,
1011
};
1112

1213
mod client;
@@ -102,7 +103,10 @@ impl ConnectionOptions {
102103
serde_qs::to_string(&query).map_err(RequestBuildError::Query)?
103104
};
104105

105-
let mut request = format!("{address}/?{query}")
106+
let mut url = Url::parse(&address).map_err(RequestBuildError::Url)?;
107+
url.set_query(Some(&query));
108+
109+
let mut request = url
106110
.into_client_request()
107111
.map_err(RequestBuildError::Other)?;
108112

0 commit comments

Comments
 (0)