diff options
| author | acdenisSK <[email protected]> | 2018-11-21 18:21:20 +0100 |
|---|---|---|
| committer | acdenisSK <[email protected]> | 2018-11-21 18:21:20 +0100 |
| commit | f148326056c39faf2601c47c8fa88f6081171b08 (patch) | |
| tree | 0643f6c62ba7e06ce791c9701235ab07561d7b38 /src/internal | |
| parent | Replace `hyper` with `reqwest` (#440) (diff) | |
| download | serenity-f148326056c39faf2601c47c8fa88f6081171b08.tar.xz serenity-f148326056c39faf2601c47c8fa88f6081171b08.zip | |
Switch to tungstenite from rust-websocket (#341)
Diffstat (limited to 'src/internal')
| -rw-r--r-- | src/internal/ws_impl.rs | 48 |
1 files changed, 28 insertions, 20 deletions
diff --git a/src/internal/ws_impl.rs b/src/internal/ws_impl.rs index 8c10264..c8c74bb 100644 --- a/src/internal/ws_impl.rs +++ b/src/internal/ws_impl.rs @@ -1,12 +1,8 @@ use flate2::read::ZlibDecoder; -use gateway::GatewayError; +use gateway::WsClient; use internal::prelude::*; use serde_json; -use websocket::{ - message::OwnedMessage, - sync::stream::{TcpStream, TlsStream}, - sync::Client as WsClient -}; +use tungstenite::Message; pub trait ReceiverExt { fn recv_json(&mut self) -> Result<Option<Value>>; @@ -16,32 +12,44 @@ pub trait SenderExt { fn send_json(&mut self, value: &Value) -> Result<()>; } -impl ReceiverExt for WsClient<TlsStream<TcpStream>> { +impl ReceiverExt for WsClient { fn recv_json(&mut self) -> Result<Option<Value>> { - Ok(match self.recv_message()? { - OwnedMessage::Binary(bytes) => { - serde_json::from_reader(ZlibDecoder::new(&bytes[..])).map(Some)? + Ok(match self.read_message()? { + Message::Binary(bytes) => { + serde_json::from_reader(ZlibDecoder::new(&bytes[..])) + .map(Some) + .map_err(|why| { + warn!("Err deserializing bytes: {:?}; bytes: {:?}", why, bytes); + + why + })? }, - OwnedMessage::Close(data) => return Err(Error::Gateway(GatewayError::Closed(data))), - OwnedMessage::Text(payload) => { - serde_json::from_str(&payload).map(Some)? + Message::Text(payload) => { + serde_json::from_str(&payload).map(Some).map_err(|why| { + warn!( + "Err deserializing text: {:?}; text: {}", + why, + payload, + ); + + why + })? }, - OwnedMessage::Ping(x) => { - self.send_message(&OwnedMessage::Pong(x)) - .map_err(Error::from)?; + Message::Ping(x) => { + self.write_message(Message::Pong(x)).map_err(Error::from)?; None }, - OwnedMessage::Pong(_) => None, + Message::Pong(_) => None, }) } } -impl SenderExt for WsClient<TlsStream<TcpStream>> { +impl SenderExt for WsClient { fn send_json(&mut self, value: &Value) -> Result<()> { serde_json::to_string(value) - .map(OwnedMessage::Text) + .map(Message::Text) .map_err(Error::from) - .and_then(|m| self.send_message(&m).map_err(Error::from)) + .and_then(|m| self.write_message(m).map_err(Error::from)) } } |