use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccessTokenResponse {
pub access_token: String,
pub expires_in: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub errcode: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub errmsg: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserInfo {
pub openid: String,
pub nickname: String,
pub sex: u8,
pub language: String,
pub city: String,
pub province: String,
pub country: String,
pub avatarurl: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub unionid: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum MessageType {
Text,
Image,
Voice,
Video,
News,
Music,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TextMessage {
pub touser: String,
pub msgtype: String,
pub text: TextContent,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TextContent {
pub content: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Code2SessionRequest {
pub appid: String,
pub secret: String,
pub js_code: String,
pub grant_type: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Code2SessionResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub openid: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub session_key: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unionid: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub errcode: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub errmsg: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionInfo {
pub openid: String,
pub session_key: String,
pub unionid: Option<String>,
pub errcode: Option<i32>,
pub errmsg: Option<String>,
}