wechat-vendor-sdk 0.4.0

wechat miniprogram and wechat corp sdk (微信小程序、公众号和企业微信部分 sdk 封装)
Documentation
use serde::{Deserialize, Serialize};
use serde_json::Value;

use crate::{wxmini_api_get, wxmini_api_post, wxmini_api_post_form};

#[derive(Debug, Serialize, Deserialize)]
pub struct BatchdownloadfileFileListRequestItem {
    pub fileid: String,
    pub max_age: u32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct BatchdownloadfileRequestBody {
    pub env: String,
    pub file_list: Vec<BatchdownloadfileFileListRequestItem>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct BatchdownloadfileFileListResponseItem {
    pub fileid: String,
    pub download_url: String,
    pub status: u32,
    pub errmsg: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct BatchdownloadfileResponseData {
    pub file_list: Vec<BatchdownloadfileFileListResponseItem>,
}

wxmini_api_post!(
  /// [获取文件下载链接](https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/development/storage/service/download.html)
  request_batch_download_file,
  "api.weixin.qq.com/tcb/batchdownloadfile",
  (access_token: Option<&str>),
  &BatchdownloadfileRequestBody,
  BatchdownloadfileResponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct MediaSecCheckParams {
    pub media_url: String,
    pub media_type: u8,
    /// 1 资料;2 评论;3 论坛;4 社交日志
    pub scene: u8,
    pub openid: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct MediaSecCheckBody {
    #[serde(flatten)]
    pub params: MediaSecCheckParams,
    pub version: u8,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct MediaSecCheckResponseData {
    pub trace_id: String,
}

wxmini_api_post!(
  /// [音视频内容安全识别](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/sec-center/sec-check/mediaCheckAsync.html)
  request_media_sec_check,
  "api.weixin.qq.com/wxa/media_check_async",
  (access_token: Option<&str>),
  &MediaSecCheckBody,
  MediaSecCheckResponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct MsgSecCheckParams {
    pub content: String,
    /// 1 资料;2 评论;3 论坛;4 社交日志
    pub scene: u8,
    pub openid: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct MsgSecCheckBody {
    #[serde(flatten)]
    pub params: MsgSecCheckParams,
    pub version: u8,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct MsgSecCheckDetailItem {
    pub strategy: String,
    pub errcode: i32,
    pub suggest: Option<String>,
    pub label: Option<u32>,
    pub keyword: Option<String>,
    pub prob: Option<u8>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct MsgSecCheckResult {
    pub suggest: String,
    pub label: u32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct MsgSecCheckResponseData {
    pub detail: Vec<MsgSecCheckDetailItem>,
    pub trace_id: String,
    pub result: MsgSecCheckResult,
}

wxmini_api_post!(
  /// [文本内容安全识别](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/sec-center/sec-check/msgSecCheck.html)
  request_msg_sec_check,
  "api.weixin.qq.com/wxa/msg_sec_check",
  (access_token: Option<&str>),
  &MsgSecCheckBody,
  MsgSecCheckResponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct SubscribeMessageRequestBody {
    pub template_id: String,
    pub touser: String,
    pub data: Value,
    pub page: Option<String>,
    pub miniprogram_state: Option<String>,
    pub lang: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct SubscribeMessageResponseData {}

wxmini_api_post!(
/// [发送订阅消息](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subscribe-message/sendMessage.html)
request_subscribe_message,
"api.weixin.qq.com/cgi-bin/message/subscribe/send",
(access_token: Option<&str>),
&SubscribeMessageRequestBody,
SubscribeMessageResponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct UploadfileRequestBody {
    pub env: String,
    pub path: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct UploadfileResponseData {
    pub url: String,
    pub token: String,
    pub authorization: String,
    pub file_id: String,
    pub cos_file_id: String,
}

wxmini_api_post!(
/// [获取文件上传链接](https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/development/storage/service/upload.html)
request_uploadfile,
"api.weixin.qq.com/tcb/uploadfile",
(access_token: Option<&str>),
&UploadfileRequestBody,
UploadfileResponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct BatchdeletefileRequestBody {
    pub env: String,
    pub fileid_list: Vec<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct BatchdeletefileResponseData {}

wxmini_api_post!(
/// [删除文件](https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/development/storage/service/delete.html)
request_batchdeletefile,
"api.weixin.qq.com/tcb/batchdeletefile",
(access_token: Option<&str>),
&BatchdeletefileRequestBody,
BatchdeletefileResponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct GetwxacodeUnlimitRequestBody {
    pub scene: String,
    pub page: Option<String>,
    pub check_path: Option<bool>,
    pub env_version: Option<String>,
    pub width: Option<u32>,
    pub auto_color: Option<bool>,
    pub line_color: Option<Value>,
    pub is_hyaline: Option<bool>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct GetwxacodeUnlimitesponseData {
    pub buffer: Vec<u8>,
}

wxmini_api_post!(
  /// [获取不限制的小程序码](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/qr-code/getUnlimitedQRCode.html)
  request_getwxacodeunlimit,
  "api.weixin.qq.com/wxa/getwxacodeunlimit",
  (access_token: Option<&str>),
  &GetwxacodeUnlimitRequestBody,
  GetwxacodeUnlimitesponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct CreatewxaqrcodeRequestBody {
    pub path: String,
    pub width: Option<u32>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct CreatewxaqrcodeResponseData {
    pub buffer: Vec<u8>,
}

wxmini_api_post!(
  /// [获取小程序二维码](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/qr-code/createQRCode.html)
  request_createwxaqrcode,
  "api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode",
  (access_token: Option<&str>),
  &CreatewxaqrcodeRequestBody,
  CreatewxaqrcodeResponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct GenerateSchemeJumpWxa {
    pub path: Option<String>,
    pub query: Option<String>,
    pub env_version: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct GenerateSchemeRequestBody {
    pub jump_wxa: Option<GenerateSchemeJumpWxa>,
    pub expire_time: Option<i32>,
    pub expire_type: Option<i32>,
    pub expire_interval: Option<i32>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct GenerateSchemeResponseData {
    pub openlink: String,
}

wxmini_api_post!(
    /// [获取加密scheme码](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/url-scheme/generateScheme.html)
    request_generatescheme,
    "api.weixin.qq.com/wxa/generatescheme",
    (access_token: Option<&str>),
    &GenerateSchemeRequestBody,
    GenerateSchemeResponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct GenerateShortLinkRequestBody {
    pub page_url: String,
    pub page_title: Option<String>,
    pub is_permanent: Option<bool>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct GenerateShortLinkResponseData {
    pub link: String,
}

wxmini_api_post!(
    /// [获取ShortLink](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/short-link/generateShortLink.html)
    request_genwxashortlink,
    "api.weixin.qq.com/wxa/genwxashortlink",
    (access_token: Option<&str>),
    &GenerateShortLinkRequestBody,
    GenerateShortLinkResponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct ScanQrcodeRequestBody {
    pub img_url: String,
    // pub img
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ScanQrcodeCodeResult {
    pub type_name: String,
    pub data: String,
    pub pos: Value,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ScanQrcodeImgSize {
    pub w: i32,
    pub h: i32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ScanQrcodeResponseData {
    pub code_results: Vec<ScanQrcodeCodeResult>,
    pub img_size: ScanQrcodeImgSize,
}

wxmini_api_post_form!(
    /// [条形码识别](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/img-ocr/img/scanQRCode.html) 注意:并不支持识别小程序码
    request_scan_qrcode,
    "api.weixin.qq.com/cv/img/qrcode",
    (access_token: Option<&str>),
    &ScanQrcodeRequestBody,
    ScanQrcodeResponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct Code2SessionResponseData {
    pub openid: String,
    pub session_key: String,
    pub unionid: Option<String>,
}

wxmini_api_get!(
    /// [小程序登录](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html)
    request_code2session,
    "api.weixin.qq.com/sns/jscode2session",
    (appid: Option<&str>, secret: Option<&str>, js_code: Option<&str>, grant_type: Option<&str>),
    Code2SessionResponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct CheckSessionKeyResponseData {}

wxmini_api_get!(
    /// [检验登录态](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/checkSessionKey.html)
    request_check_session_key,
    "api.weixin.qq.com/wxa/checksession",
    (access_token: Option<&str>, signature: Option<&str>, openid: Option<&str>, sig_method: Option<&str>),
    CheckSessionKeyResponseData
);

#[derive(Debug, Serialize, Deserialize)]
pub struct ResetUserSessionKeyResponseData {
    pub openid: String,
    pub session_key: String,
}

wxmini_api_get!(
    /// [重置登录态](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/ResetUserSessionKey.html)
    request_reset_user_session_key,
    "api.weixin.qq.com/wxa/resetusersessionkey",
    (access_token: Option<&str>, openid: Option<&str>, sig_method: Option<&str>, signature: Option<&str>),
    ResetUserSessionKeyResponseData
);