misskey_api/streaming/channel/
local_timeline.rs

1use crate::model::note::Note;
2use crate::streaming::channel::NoOutgoing;
3
4use serde::{Deserialize, Serialize};
5
6#[derive(Deserialize, Debug, Clone)]
7#[serde(rename_all = "camelCase", tag = "type", content = "body")]
8pub enum LocalTimelineEvent {
9    Note(Note),
10}
11
12#[derive(Serialize, Default, Debug, Clone)]
13pub struct Request {}
14
15impl misskey_core::streaming::ConnectChannelRequest for Request {
16    type Incoming = LocalTimelineEvent;
17    type Outgoing = NoOutgoing;
18
19    const NAME: &'static str = "localTimeline";
20}
21
22#[cfg(test)]
23mod tests {
24    use super::Request;
25    use crate::test::{websocket::TestClient, ClientExt};
26
27    use futures::{future, StreamExt};
28
29    #[tokio::test]
30    async fn subscribe_unsubscribe() {
31        let client = TestClient::new().await;
32
33        let mut stream = client.channel(Request::default()).await.unwrap();
34        stream.disconnect().await.unwrap();
35    }
36
37    #[tokio::test]
38    async fn stream() {
39        let client = TestClient::new().await;
40
41        let mut stream = client.channel(Request::default()).await.unwrap();
42
43        future::join(
44            client.create_note(Some("The world is fancy!"), None, None),
45            async { stream.next().await.unwrap().unwrap() },
46        )
47        .await;
48    }
49}