diff options
-rw-r--r-- | src/lib.rs | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -802,6 +802,23 @@ impl<H: HttpSend> MastodonUnauth<H> { fn send(&self, req: RequestBuilder) -> Result<Response> { Ok(self.http_sender.send(&self.client, req)?) } + + /// Get a stream of the public timeline + pub fn streaming_public(&self) -> Result<EventReader<WebSocket>> { + let mut url: url::Url = self.route("/api/v1/streaming/public/local")?; + url.query_pairs_mut().append_pair("stream", "public"); + let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?; + let new_scheme = match url.scheme() { + "http" => "ws", + "https" => "wss", + x => return Err(Error::Other(format!("Bad URL scheme: {}", x))), + }; + url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?; + + let client = tungstenite::connect(url.as_str())?.0; + + Ok(EventReader(WebSocket(client))) + } } impl<H: HttpSend> MastodonUnauthenticated<H> for MastodonUnauth<H> { |