use serde::{Deserialize, Serialize};
pub const ILINK_BASE_URL: &str = "https://ilinkai.weixin.qq.com";
pub const ILINK_CDN_BASE_URL: &str = "https://novac2c.cdn.weixin.qq.com/c2c";
#[derive(Debug, Deserialize)]
pub struct GetQrcodeResponse {
pub ret: i32,
pub qrcode: Option<String>,
pub qrcode_img_content: Option<String>,
pub errmsg: Option<String>,
}
#[derive(Debug, Deserialize)]
pub struct QrcodeStatusResponse {
pub ret: i32,
pub status: Option<i32>,
pub bot_token: Option<String>,
pub errmsg: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetUpdatesRequest {
pub buf: Option<String>,
pub timeout: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetUpdatesResponse {
pub ret: i32,
pub errmsg: Option<String>,
pub buf: Option<String>,
pub list: Option<Vec<InboundMessage>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InboundMessage {
pub msg_id: String,
pub from_user: String,
pub chat_id: Option<String>,
pub chat_type: Option<String>,
pub msg_type: i32,
pub content: Option<String>,
pub context_token: String,
pub timestamp: Option<i64>,
#[serde(flatten)]
pub extra: serde_json::Value,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct SendMessageRequest {
pub context_token: String,
pub msg_type: i32,
pub content: Option<String>,
pub media_id: Option<String>,
#[serde(flatten)]
pub extra: std::collections::BTreeMap<String, serde_json::Value>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct SendMessageResponse {
pub ret: i32,
pub errmsg: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct GetConfigRequest {
pub context_token: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct GetConfigResponse {
pub ret: i32,
pub typing_ticket: Option<String>,
pub errmsg: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct SendTypingRequest {
pub context_token: String,
pub typing_ticket: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct GetUploadUrlRequest {
pub file_type: String,
pub file_size: u64,
pub file_md5: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct GetUploadUrlResponse {
pub ret: i32,
pub upload_url: Option<String>,
pub media_id: Option<String>,
pub errmsg: Option<String>,
}
pub mod msg_type {
pub const TEXT: i32 = 1;
pub const IMAGE: i32 = 3;
pub const FILE: i32 = 6;
pub const VIDEO: i32 = 43;
pub const VOICE: i32 = 34;
}