use std::collections::HashMap;
use crate::models::{LevelInfo, Nameplate, OfficialVerify, Pendant};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Comment {
pub rpid: i64, pub oid: i64, #[serde(rename = "type")]
pub oid_type: i64, pub mid: i64, pub root: i64, pub parent: i64, pub dialog: i64, pub count: i64, pub rcount: i64, pub state: i64, pub fansgrade: i64, pub attr: i64, pub ctime: i64, pub like: i64, pub action: i64, pub member: Member, pub content: Content, pub up_action: UpAction, pub invisible: bool, pub reply_control: ReplyControl, pub folder: Folder,
pub floor: Option<u64>,
pub show_follow: Option<bool>,
pub card_label: Option<Vec<CardLabel>>,
pub rpid_str: Option<String>,
pub root_str: Option<String>,
pub parent_str: Option<String>,
pub dialog_str: Option<String>,
pub mid_str: Option<String>,
pub oid_str: Option<String>,
pub replies: Option<Vec<Comment>>,
pub assist: Option<u64>,
pub dynamic_id_str: Option<String>,
pub note_cvid_str: Option<String>,
pub track_info: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PageInfo {
pub num: u64, pub size: u64, pub count: u64, pub acount: Option<u64>, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Member {
pub mid: String, pub uname: String, pub sex: String, pub sign: String, pub avatar: String, pub level_info: LevelInfo, pub pendant: Pendant, pub nameplate: Nameplate, pub official_verify: OfficialVerify, pub vip: Vip, #[serde(default)]
pub user_sailing: serde_json::Value, #[serde(default)]
pub is_contractor: bool, #[serde(default)]
pub contract_desc: String,
pub rank: Option<String>,
pub display_rank: Option<String>,
pub fans_detail_a: Option<FansDetail>, pub following: Option<u64>, pub is_followed: Option<u64>,
pub rank_b: Option<String>, pub face_nft_new: Option<i64>, pub senior: Option<JumpUrl>, pub fans_detail_b: Option<serde_json::Value>,
pub user_sailing_v2: Option<JumpUrl>, pub nft_interaction: Option<serde_json::Value>, pub avatar_item: Option<serde_json::Value>, }
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Vip {
pub vip_type: i64,
pub vip_due_date: i64,
pub due_remark: String,
pub access_status: i64,
pub vip_status: i64,
pub vip_status_warn: String,
pub theme_type: i64,
#[serde(rename = "avatar_subscript")]
pub avatar_subscript: i64,
#[serde(rename = "nickname_color")]
pub nickname_color: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FansDetail {
pub uid: u64,
pub medal_id: u64,
pub medal_name: String,
pub score: Option<u64>,
pub level: u64,
pub intimacy: Option<u64>,
pub master_status: Option<u64>,
pub is_receive: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserSailing {
pub pendant: Option<Pendant>,
pub cardbg: Option<CardBg>,
pub cardbg_with_focus: Option<()>, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CardBg {
pub id: u64,
pub name: String,
pub image: String,
pub jump_url: Option<String>,
pub fan: Option<FanInfo>,
pub r#type: String, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FanInfo {
pub is_fan: u64, pub number: u64,
pub color: String,
pub name: String,
pub num_desc: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Content {
pub message: String,
pub members: Option<Vec<Member>>, pub jump_url: Option<HashMap<String, JumpUrl>>, pub max_line: Option<u64>,
pub plat: Option<u64>, pub device: Option<String>,
pub emote: Option<HashMap<String, Emote>>, pub pictures: Option<Vec<Picture>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Emote {
pub id: u64, pub package_id: u64, pub state: u64, pub r#type: u64, pub attr: Option<u64>, pub text: String, pub url: String, pub meta: Option<EmoteMeta>, pub mtime: Option<u64>, pub jump_title: Option<String>, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JumpUrl {
pub title: Option<String>, pub state: Option<u64>, pub prefix_icon: Option<String>, pub app_url_schema: Option<String>, pub app_name: Option<String>, pub app_package_name: Option<String>, pub click_report: Option<String>, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmoteMeta {
pub size: Option<u64>, pub alias: Option<String>, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Picture {
pub img_src: String,
pub img_width: u64,
pub img_height: u64,
pub img_size: f64, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Folder {
pub has_folded: bool,
pub is_folded: bool,
pub rule: String, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpAction {
pub like: bool,
pub reply: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CardLabel {
pub rpid: u64,
pub text_content: String,
pub text_color_day: String,
pub text_color_night: String,
pub label_color_day: String,
pub label_color_night: String,
pub image: Option<String>,
pub r#type: Option<u64>,
pub background: Option<String>,
pub background_width: Option<u64>,
pub background_height: Option<u64>,
pub jump_url: Option<String>,
pub effect: Option<u64>,
pub effect_start_time: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReplyControl {
pub sub_reply_entry_text: Option<String>,
pub sub_reply_title_text: Option<String>,
pub time_desc: Option<String>,
pub location: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Top {
pub admin: serde_json::Value,
pub upper: serde_json::Value,
pub vote: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Config {
pub showtopic: u32,
pub show_up_flag: bool,
pub read_only: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Cursor {
pub is_begin: bool,
pub prev: i64,
pub next: i64,
pub is_end: bool,
pub pagination_reply: serde_json::Value,
pub session_id: String,
pub mode: i64,
pub mode_text: String,
pub all_count: i64,
pub support_mode: Vec<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Upper {
pub mid: u64, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Control {
pub input_disable: bool,
pub root_input_text: String,
pub child_input_text: String,
pub giveup_input_text: String,
pub screenshot_icon_state: i64,
pub upload_picture_icon_state: i64,
pub answer_guide_text: String,
pub answer_guide_icon_url: String,
pub answer_guide_ios_url: String,
pub answer_guide_android_url: String,
pub bg_text: String,
pub empty_page: Option<serde_json::Value>,
pub show_type: i64,
pub show_text: String,
pub web_selection: bool,
pub disable_jump_emote: bool,
pub enable_charged: bool,
pub enable_cm_biz_helper: bool,
pub preload_resources: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CM {
pub id: i64,
pub contract_id: String,
pub pos_num: i64,
pub name: String,
pub pic: String,
pub litpic: String,
pub url: String,
pub style: i64,
pub agency: String,
pub label: String,
pub intro: String,
pub creative_type: i64,
pub request_id: String,
pub src_id: i64,
pub area: i64,
pub is_ad_loc: bool,
pub ad_cb: String,
pub title: String,
pub server_type: i64,
pub cm_mark: i64,
pub stime: i64,
pub mid: String,
pub activity_type: i64,
pub epid: i64,
pub sub_title: String,
pub ad_desc: String,
pub adver_name: String,
pub null_frame: bool,
pub pic_main_color: String,
}