wechat_api_rs/
types.rs

1//! WeChat SDK Type Definitions
2
3use serde::{Deserialize, Serialize};
4
5// Common types
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct AccessTokenResponse {
8    pub access_token: String,
9    pub expires_in: u64,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub errcode: Option<i32>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub errmsg: Option<String>,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct UserInfo {
18    pub openid: String,
19    pub nickname: String,
20    pub sex: u8,
21    pub language: String,
22    pub city: String,
23    pub province: String,
24    pub country: String,
25    pub avatarurl: String,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub unionid: Option<String>,
28}
29
30// Official Account types
31#[derive(Debug, Clone, Serialize, Deserialize)]
32#[serde(rename_all = "lowercase")]
33pub enum MessageType {
34    Text,
35    Image,
36    Voice,
37    Video,
38    News,
39    Music,
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize)]
43pub struct TextMessage {
44    pub touser: String,
45    pub msgtype: String,
46    pub text: TextContent,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct TextContent {
51    pub content: String,
52}
53
54// Mini Program types
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct Code2SessionRequest {
57    pub appid: String,
58    pub secret: String,
59    pub js_code: String,
60    pub grant_type: String,
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize)]
64pub struct Code2SessionResponse {
65    #[serde(skip_serializing_if = "Option::is_none")]
66    pub openid: Option<String>,
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub session_key: Option<String>,
69    #[serde(skip_serializing_if = "Option::is_none")]
70    pub unionid: Option<String>,
71    #[serde(skip_serializing_if = "Option::is_none")]
72    pub errcode: Option<i32>,
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub errmsg: Option<String>,
75}
76
77/// Session information returned from code2Session API
78#[derive(Debug, Clone, Serialize, Deserialize)]
79pub struct SessionInfo {
80    pub openid: String,
81    pub session_key: String,
82    pub unionid: Option<String>,
83    pub errcode: Option<i32>,
84    pub errmsg: Option<String>,
85}