use puniyu_contact::Contact;
use puniyu_element::Elements;
use puniyu_sender::{Role, Sender, Sex};
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[derive(Debug, Clone, Deserialize, Serialize)]
pub enum AvatarSize {
Small,
Medium,
Large,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct SendMsgType {
pub message_id: String,
pub time: u64,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct MessageType {
pub time: u64,
pub message_id: String,
pub message_seq: u64,
pub contact: Contact,
pub sender: Sender,
pub elements: Vec<Elements>,
}
#[derive(Debug, Clone)]
pub enum HighlightsAction {
Add,
Remove,
}
#[derive(Debug, Clone)]
pub enum MuteType {
Set,
Remove,
}
#[derive(Debug, Clone)]
pub enum SetAdminType {
Set,
Remove,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct GroupHighlightsType {
pub message_time: u64,
pub message_id: String,
pub message_seq: u64,
pub group_id: String,
pub sender_id: String,
pub sender_name: String,
pub target_id: String,
pub target_name: String,
pub target_time: u64,
pub json_elements: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct UserInfo {
pub user_id: String,
pub nick: String,
pub avatar: String,
pub age: Option<u8>,
pub sex: Sex,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct GroupInfo {
pub group_id: String,
pub group_name: String,
pub avatar: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct GroupMemberInfo {
pub user_id: String,
pub nick: String,
pub role: Role,
pub title: Option<String>,
pub card: String,
pub avatar: String,
pub age: Option<u8>,
pub sex: Sex,
pub joined_at: u64,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct QQHonorInfo {
pub user_id: String,
pub nick: String,
pub honor_id: u64,
pub honor_name: String,
pub honor_avatar: String,
pub honor_desc: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct QQGroupFileSystemInfo {
pub file_count: u32,
pub limit_count: u32,
pub used_space: u64,
pub total_space: u64,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct QQGroupFileInfo {
pub fid: String,
pub name: String,
pub size: u64,
pub upload_time: u64,
pub expire_time: u64,
pub modify_time: u64,
pub download_count: u32,
pub upload: String,
pub upload_name: String,
pub md5: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct QQGroupFolderInfo {
pub id: String,
pub name: String,
pub file_count: u32,
pub create_time: u64,
pub creator_id: String,
pub creator_name: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct QQGroupFileList {
pub files: Vec<QQGroupFileInfo>,
pub folders: Vec<QQGroupFolderInfo>,
}
#[derive(Debug, Clone)]
pub enum SetFriendApplyType {
Agree,
Refuse,
}
#[derive(Debug, Clone)]
pub enum SetGroupApplyType {
Agree,
Refuse,
}
#[derive(Debug, Clone)]
pub struct DownloadFileInfo {
pub file_path: PathBuf,
}
#[derive(Debug, Clone)]
pub struct CreateGroupFolderInfo {
pub folder_id: String,
pub folder_name: String,
}
#[derive(Debug, Clone)]
pub struct GroupMuteInfo {
pub user_id: String,
pub mute_time: u64,
}
#[derive(Debug, Clone)]
pub struct QQCredentialInfo {
pub cookie: String,
pub csrf_token: String,
}
#[derive(Debug, Clone)]
pub struct QQRkeyInfo {
pub r#type: RKeyType,
pub rkey: String,
pub created_at: u64,
pub ttl: u64,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub enum RKeyType {
Private,
Group,
}