wx_rust_open/bean/auth/
wx_open_authorizer_info.rs1use std::collections::HashMap;
10
11use serde::Deserialize;
12
13#[derive(Debug, Clone, Default, PartialEq, serde::Serialize, serde::Deserialize)]
15pub struct WxOpenAuthorizerInfo {
16 #[serde(rename = "nick_name", default)]
18 pub nick_name: Option<String>,
19 #[serde(rename = "head_img", default)]
21 pub head_img: Option<String>,
22 #[serde(rename = "service_type_info", default, deserialize_with = "de_id")]
24 pub service_type_info: Option<i32>,
25 #[serde(rename = "verify_type_info", default, deserialize_with = "de_id")]
27 pub verify_type_info: Option<i32>,
28 #[serde(rename = "user_name", default)]
30 pub user_name: Option<String>,
31 #[serde(rename = "principal_name", default)]
33 pub principal_name: Option<String>,
34 #[serde(rename = "business_info", default)]
36 pub business_info: Option<HashMap<String, i32>>,
37 #[serde(rename = "alias", default)]
39 pub alias: Option<String>,
40 #[serde(rename = "qrcode_url", default)]
42 pub qrcode_url: Option<String>,
43 #[serde(rename = "account_status", default)]
45 pub account_status: Option<i32>,
46 #[serde(rename = "signature", default)]
48 pub signature: Option<String>,
49 #[serde(rename = "MiniProgramInfo", default)]
51 pub mini_program_info: Option<MiniProgramInfo>,
52 #[serde(rename = "register_type", default)]
55 pub register_type: Option<i32>,
56 #[serde(rename = "basic_config", default)]
58 pub basic_config: Option<BasicConfig>,
59}
60
61fn de_id<'de, D>(d: D) -> Result<Option<i32>, D::Error>
64where
65 D: serde::Deserializer<'de>,
66{
67 let v: serde_json::Value =
68 serde_json::Value::deserialize(d).map_err(serde::de::Error::custom)?;
69 Ok(match v {
70 serde_json::Value::Object(m) => m.get("id").and_then(|x| x.as_i64()).map(|x| x as i32),
71 serde_json::Value::Number(n) => n.as_i64().map(|x| x as i32),
72 _ => None,
73 })
74}
75
76#[derive(Debug, Clone, Default, PartialEq, serde::Serialize, serde::Deserialize)]
78pub struct MiniProgramInfo {
79 #[serde(rename = "visit_status", default)]
81 pub visit_status: Option<i32>,
82 #[serde(default)]
84 pub network: Option<Network>,
85 #[serde(default)]
87 pub categories: Option<Vec<Category>>,
88}
89
90#[derive(Debug, Clone, Default, PartialEq, serde::Serialize, serde::Deserialize)]
92pub struct Category {
93 #[serde(default)]
94 pub first: Option<String>,
95 #[serde(default)]
96 pub second: Option<String>,
97}
98
99#[derive(Debug, Clone, Default, PartialEq, serde::Serialize, serde::Deserialize)]
101pub struct Network {
102 #[serde(rename = "RequestDomain", default)]
103 pub request_domain: Option<Vec<String>>,
104 #[serde(rename = "WsRequestDomain", default)]
105 pub ws_request_domain: Option<Vec<String>>,
106 #[serde(rename = "UploadDomain", default)]
107 pub upload_domain: Option<Vec<String>>,
108 #[serde(rename = "DownloadDomain", default)]
109 pub download_domain: Option<Vec<String>>,
110 #[serde(rename = "BizDomain", default)]
111 pub biz_domain: Option<Vec<String>>,
112}
113
114#[derive(Debug, Clone, Default, PartialEq, serde::Serialize, serde::Deserialize)]
116pub struct BasicConfig {
117 #[serde(rename = "is_phone_configured", default)]
118 pub is_phone_configured: Option<bool>,
119 #[serde(rename = "is_email_configured", default)]
120 pub is_email_configured: Option<bool>,
121}