wamp_client/sync/
request.rs1use std::str::FromStr;
2use wamp_core::tungstenite;
3use wamp_core::http::{Uri, Version, self};
4use wamp_core::tungstenite::{client::IntoClientRequest, handshake::client::generate_key};
5
6pub struct WampRequest<U: ToString, P: ToString> {
7 pub uri: U,
8 pub protocol: P
9}
10
11impl<U: ToString, P: ToString> IntoClientRequest for WampRequest<U, P> {
12 fn into_client_request(self) -> tungstenite::Result<tungstenite::handshake::client::Request> {
13 let uri = Uri::from_str(&self.uri.to_string())?;
14 let req = http::Request::builder()
15 .uri(self.uri.to_string())
16 .version(Version::HTTP_11)
17 .header("Sec-WebSocket-Protocol", self.protocol.to_string())
18 .header("Sec-WebSocket-Key", generate_key())
19 .header("Connection", "Upgrade")
20 .header("Upgrade", "websocket")
21 .header("Sec-WebSocket-Version", 13)
22 .header("Host", uri.host().unwrap());
23 Ok(tungstenite::handshake::client::Request::from(req.body(())?))
24 }
25}