use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::{wxmini_api_get, wxmini_api_post};
#[derive(Debug, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ActionScene {
Str { scene_str: String },
Id { scene_id: u32 },
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ActionInfo {
pub scene: ActionScene,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct QrcodeCreateRequestBody {
pub expire_seconds: Option<i32>,
pub action_name: String,
pub action_info: ActionInfo,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct QrcodeCreateResponseData {
pub ticket: String,
pub expire_seconds: Option<i32>,
pub url: String,
}
wxmini_api_post!(
request_qrcode_create,
"api.weixin.qq.com/cgi-bin/qrcode/create",
(access_token: Option<&str>),
&QrcodeCreateRequestBody,
QrcodeCreateResponseData
);
#[derive(Debug, Serialize, Deserialize)]
pub struct MenuCreateRequestBody {
pub button: Vec<Value>,
}
wxmini_api_post!(
request_menu_create,
"api.weixin.qq.com/cgi-bin/menu/create",
(access_token: Option<&str>),
&MenuCreateRequestBody,
Value
);
#[derive(Debug, Serialize, Deserialize)]
pub struct TagsCreateRequestItem {
pub name: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct TagsCreateRequestBody {
pub tag: TagsCreateRequestItem,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct TagsCreateResponseItem {
pub id: i32,
pub name: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct TagsCreateResponseData {
pub tag: TagsCreateResponseItem,
}
wxmini_api_post!(
request_tags_create,
"api.weixin.qq.com/cgi-bin/tags/create",
(access_token: Option<&str>),
&TagsCreateRequestBody,
TagsCreateResponseData
);
#[derive(Debug, Serialize, Deserialize)]
pub struct TagsGetResponseItem {
pub id: i32,
pub name: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct TagsGetResponseData {
pub tags: Vec<TagsCreateResponseItem>,
}
wxmini_api_get!(
request_tags_get,
"api.weixin.qq.com/cgi-bin/tags/get",
(access_token: Option<&str>),
TagsGetResponseData
);
#[derive(Debug, Serialize, Deserialize)]
pub struct TagsMembersBatchtaggingRequestBody {
pub openid_list: Vec<String>,
pub tagid: i32,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct TagsMembersBatchtaggingResponseData {}
wxmini_api_post!(
request_tags_members_batchtagging,
"api.weixin.qq.com/cgi-bin/tags/members/batchtagging",
(access_token: Option<&str>),
&TagsMembersBatchtaggingRequestBody,
Value
);
#[derive(Debug, Serialize, Deserialize)]
pub struct UserGetResponseItemData {
pub openid: Vec<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct UserGetResponseData {
pub total: i32,
pub count: i32,
pub data: Option<UserGetResponseItemData>,
pub next_openid: String,
}
wxmini_api_get!(
request_user_get,
"api.weixin.qq.com/cgi-bin/user/get",
(access_token: Option<&str>, next_openid: Option<&str>),
UserGetResponseData
);
#[derive(Debug, Serialize, Deserialize)]
pub struct GetTicketResponseData {
pub ticket: String,
pub expires_in: i32,
}
wxmini_api_get!(
request_getticket,
"api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi",
(access_token: Option<&str>, from_appid: Option<&str>),
GetTicketResponseData
);
#[derive(Debug, Serialize, Deserialize)]
pub struct MessageTemplateSendMiniprogramData {
pub appid: String,
pub pagepath: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct MessageTemplateSendRequestBody {
pub touser: String,
pub template_id: String,
pub url: Option<String>,
pub miniprogram: Option<MessageTemplateSendMiniprogramData>,
pub data: Value,
pub client_msg_id: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct MessageTemplateSendResponseData {}
wxmini_api_post!(
request_message_template_send,
"api.weixin.qq.com/cgi-bin/message/template/send",
(access_token: Option<&str>),
&MessageTemplateSendRequestBody,
MessageTemplateSendResponseData
);
#[derive(Debug, Serialize, Deserialize)]
pub struct UserInfoBatchgetItem {
pub openid: String,
pub lang: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct UserInfoBatchgetRequestBody {
pub user_list: Vec<UserInfoBatchgetItem>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct UserInfo {
pub subscribe: i32,
pub openid: Option<String>,
pub language: Option<String>,
pub subscribe_time: Option<i64>,
pub unionid: Option<String>,
pub remark: Option<String>,
pub groupid: Option<i32>,
pub tagid_list: Vec<i32>,
pub subscribe_scene: Option<String>,
pub qr_scene: Option<i32>,
pub qr_scene_str: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct UserInfoBatchgetResponseData {
pub user_info_list: Vec<UserInfo>,
}
wxmini_api_post!(
request_user_info_batchget,
"api.weixin.qq.com/cgi-bin/user/info/batchget",
(access_token: Option<&str>),
&UserInfoBatchgetRequestBody,
UserInfoBatchgetResponseData
);