kick_api/models/
live_chat.rs1use serde::Deserialize;
2
3#[derive(Debug, Clone, Deserialize)]
5pub(crate) struct PusherMessage {
6 pub event: String,
7 pub data: String,
8 #[serde(default)]
9 pub channel: Option<String>,
10}
11
12#[derive(Debug, Clone)]
16pub struct PusherEvent {
17 pub event: String,
19 pub channel: Option<String>,
21 pub data: String,
23}
24
25#[derive(Debug, Clone, Deserialize)]
27pub struct LiveChatMessage {
28 pub id: String,
30
31 #[serde(default)]
33 pub chatroom_id: Option<u64>,
34
35 pub content: String,
37
38 #[serde(rename = "type")]
40 pub r#type: String,
41
42 #[serde(default)]
44 pub created_at: Option<String>,
45
46 pub sender: ChatSender,
48
49 #[serde(default)]
51 pub metadata: Option<ChatMessageMetadata>,
52}
53
54#[derive(Debug, Clone, Deserialize)]
56pub struct ChatMessageMetadata {
57 #[serde(default)]
59 pub original_sender: Option<OriginalSender>,
60
61 #[serde(default)]
63 pub original_message: Option<OriginalMessage>,
64}
65
66#[derive(Debug, Clone, Deserialize)]
68pub struct OriginalSender {
69 pub username: String,
70}
71
72#[derive(Debug, Clone, Deserialize)]
74pub struct OriginalMessage {
75 pub content: String,
76}
77
78#[derive(Debug, Clone, Deserialize)]
80pub struct ChatSender {
81 pub id: u64,
83
84 pub username: String,
86
87 #[serde(default)]
89 pub slug: Option<String>,
90
91 pub identity: ChatIdentity,
93}
94
95#[derive(Debug, Clone, Deserialize)]
97pub struct ChatIdentity {
98 pub color: String,
100
101 pub badges: Vec<ChatBadge>,
103}
104
105#[derive(Debug, Clone, Deserialize)]
107pub struct ChatBadge {
108 #[serde(rename = "type")]
110 pub r#type: String,
111
112 pub text: String,
114
115 #[serde(default)]
117 pub count: Option<u32>,
118}