use super::{post_send, Part};
use crate::{error::CommonError, wechat::WxApiRequestBuilder, SdkResult};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct Media {
pub media_url: String,
pub media_type: i32,
pub version: f64,
pub openid: String,
pub scene: i32,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct MediaCheckResult {
pub trace_id: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Msg {
pub version: f64,
pub openid: String,
pub scene: i32,
pub content: String,
#[serde(default)]
pub nickname: Option<String>,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub signature: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct MsgCheckRes {
pub trace_id: String,
pub result: MsgCheckResult,
pub detail: Vec<MsgCheckDetail>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct MsgCheckResult {
pub suggust: String,
pub label: i32,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct MsgCheckDetail {
pub strategy: String,
pub errcode: i32,
pub suggest: String,
#[serde(default)]
pub label: Option<i32>,
#[serde(default)]
pub prob: Option<i32>,
#[serde(default)]
pub keyword: Option<String>,
}
pub struct ContentSecurityModule<'a, T: WxApiRequestBuilder>(pub(crate) &'a T);
impl<'a, T: WxApiRequestBuilder> ContentSecurityModule<'a, T> {
pub async fn img_sec_check(&self, data: Part) -> SdkResult<()> {
let url = "https://api.weixin.qq.com/wxa/img_sec_check";
let part = reqwest::multipart::Part::bytes(data.data)
.file_name(data.filename)
.mime_str(&data.content_type);
let form = reqwest::multipart::Form::new().part(data.name, part.unwrap());
let builder = self.0.wx_post(url).await?.multipart(form);
let res: CommonError = builder.send().await?.json().await?;
res.into()
}
pub async fn media_check_async(&self, data: &Media) -> SdkResult<MediaCheckResult> {
let url = "https://api.weixin.qq.com/wxa/media_check_async";
post_send(self.0, url, data).await
}
pub async fn msg_sec_check(&self, data: &Msg) -> SdkResult<MsgCheckRes> {
let url = "https://api.weixin.qq.com/wxa/msg_sec_check";
post_send(self.0, url, data).await
}
}