refactor: reorganize API and WebSocket modules

Split client, endpoint, and WebSocket implementations into domain-focused modules while preserving the public API.\n\nImprove crate and API documentation to describe responsibilities, authentication boundaries, and response compatibility.
This commit is contained in:
2026-07-19 22:31:47 -07:00
parent c5db920738
commit b3e3a3c87c
33 changed files with 2956 additions and 2712 deletions
+182
View File
@@ -0,0 +1,182 @@
//! 排行、互动与房间状态相关直播命令的数据模型.
use serde::Deserialize;
use serde_json::Value;
use std::collections::HashMap;
/// 高能榜人数变化消息。
#[derive(Debug, Clone, Default, PartialEq)]
pub struct OnlineRankCountMessage {
/// 服务端原始命令名。
pub cmd: String,
/// 高能榜人数。
pub count: Option<u64>,
/// 高能榜人数显示文本。
pub count_text: Option<String>,
/// 在线人数。
pub online_count: Option<u64>,
/// 在线人数显示文本。
pub online_count_text: Option<String>,
/// 未被当前版本建模的字段。
pub extra: HashMap<String, Value>,
}
/// 看过人数变化消息。
#[derive(Debug, Clone, Default, PartialEq)]
pub struct WatchedChangeMessage {
/// 服务端原始命令名。
pub cmd: String,
/// 看过人数。
pub watched_count: Option<u64>,
/// 小字号显示文本。
pub text_small: Option<String>,
/// 大字号显示文本。
pub text_large: Option<String>,
/// 未被当前版本建模的字段。
pub extra: HashMap<String, Value>,
}
/// 一批下播房间列表消息。
#[derive(Debug, Clone, Default, PartialEq)]
pub struct StopLiveRoomListMessage {
/// 服务端原始命令名。
pub cmd: String,
/// 已下播的房间 ID 列表。
pub room_ids: Vec<u64>,
/// 未被当前版本建模的字段。
pub extra: HashMap<String, Value>,
}
/// 礼物星球进度消息。
#[derive(Debug, Clone, Default, PartialEq)]
pub struct GiftStarProcessMessage {
/// 服务端原始命令名。
pub cmd: String,
/// 当前进度名称。
pub name: Option<String>,
/// 当前数量。
pub current: Option<u64>,
/// 目标数量。
pub total: Option<u64>,
/// 服务端版本号。
pub version: Option<u64>,
/// 未被当前版本建模的字段。
pub extra: HashMap<String, Value>,
}
/// 含 protobuf Base64 载荷的推送消息。
#[derive(Debug, Clone, Default, PartialEq)]
pub struct ProtobufPayloadMessage {
/// 服务端原始命令名。
pub cmd: String,
/// Base64 编码的 protobuf 数据。
pub pb_base64: String,
/// 弹幕评分。
pub dm_score: Option<u64>,
/// 未被当前版本建模的顶层或 `data` 字段。
pub extra: HashMap<String, Value>,
}
/// 大航海购买消息。
#[derive(Debug, Clone, Deserialize, PartialEq)]
pub struct GuardBuyMessage {
/// 服务端原始命令名。
pub cmd: String,
/// 购买用户 UID。
pub uid: u64,
/// 购买用户昵称。
pub username: String,
/// 舰队名称。
pub gift_name: String,
/// 购买数量。
pub num: u64,
/// 舰队等级,通常 1=总督、2=提督、3=舰长。
pub guard_level: u8,
/// 未被当前版本建模的顶层字段。
#[serde(default, flatten)]
pub extra: HashMap<String, Value>,
}
/// 醒目留言消息。
#[derive(Debug, Clone, Deserialize, PartialEq)]
pub struct SuperChatMessage {
/// 服务端原始命令名。
pub cmd: String,
/// 醒目留言的具体数据。
pub data: SuperChatData,
/// 未被当前版本建模的顶层字段。
#[serde(default, flatten)]
pub extra: HashMap<String, Value>,
}
/// [`SuperChatMessage`] 的业务数据。
#[derive(Debug, Clone, Deserialize, PartialEq)]
pub struct SuperChatData {
/// 发送用户 UID。
pub uid: u64,
/// 醒目留言文本。
pub message: String,
/// 醒目留言价格。
pub price: u64,
/// 未被当前版本建模的字段。
#[serde(default, flatten)]
pub extra: HashMap<String, Value>,
}
/// 用户进入、关注或分享等互动消息。
#[derive(Debug, Clone, Deserialize, PartialEq)]
pub struct InteractWordMessage {
/// 服务端原始命令名。
pub cmd: String,
/// 互动事件的具体数据。
pub data: InteractWordData,
/// 未被当前版本建模的顶层字段。
#[serde(default, flatten)]
pub extra: HashMap<String, Value>,
}
/// [`InteractWordMessage`] 的业务数据。
#[derive(Debug, Clone, Deserialize, PartialEq)]
pub struct InteractWordData {
/// 触发互动的用户 UID。
pub uid: u64,
/// 触发互动的用户昵称。
pub uname: String,
/// 互动类型,通常 1=进入、2=关注、3=分享。
pub msg_type: u8,
/// 未被当前版本建模的字段。
#[serde(default, flatten)]
pub extra: HashMap<String, Value>,
}
/// 直播间标题或分区发生变化时的消息。
#[derive(Debug, Clone, Deserialize, PartialEq)]
pub struct RoomChangeMessage {
/// 服务端原始命令名。
pub cmd: String,
/// 当前直播标题。
#[serde(default)]
pub title: Option<String>,
/// 当前子分区名称。
#[serde(default)]
pub area_name: Option<String>,
/// 当前父分区名称。
#[serde(default)]
pub parent_area_name: Option<String>,
/// 未被当前版本建模的顶层字段。
#[serde(default, flatten)]
pub extra: HashMap<String, Value>,
}
/// 开播或下播状态消息。
#[derive(Debug, Clone, Deserialize, PartialEq)]
pub struct LiveStatusMessage {
/// 服务端原始命令名。
pub cmd: String,
/// 直播间 ID;部分推送可能省略该字段。
#[serde(default)]
pub roomid: Option<u64>,
/// 未被当前版本建模的顶层字段。
#[serde(default, flatten)]
pub extra: HashMap<String, Value>,
}