1use serde::{Deserialize, Serialize};
4
5#[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#[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#[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#[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}