misskey_api/streaming/channel/
home_timeline.rs1use 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 HomeTimelineEvent {
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 = HomeTimelineEvent;
17 type Outgoing = NoOutgoing;
18
19 const NAME: &'static str = "homeTimeline";
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}