async_wechat/official_account/
menu.rs1use crate::OfficialAccount;
2
3use super::core::BasicResponse;
4
5pub(crate) const DELETE_MENU_URL: &str = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=";
6
7#[cfg(test)]
8mod tests {
9 use std::env;
10
11 use crate::{Config, OfficialAccount};
12
13 #[tokio::test]
14 async fn delete_menu() {
15 dotenv::dotenv().ok();
16
17 let appid = env::var("APPID").expect("APPID not set");
18 let app_secret = env::var("APP_SECRET").expect("APP_SECRET not set");
19 let redis_url = env::var("REDIS_URL").expect("REDIS_URL not set");
20
21 let config = Config {
22 appid: appid.clone(),
23 app_secret: app_secret.clone(),
24 token: "wechat".to_string(),
25 encoding_aes_key: None,
26 };
27 let account = OfficialAccount::new(config, redis_url);
28 let result = account.delete_menu().await;
29 println!("url: {:#?}", result);
30 }
31}
32
33impl OfficialAccount {
34 pub async fn delete_menu(&self) -> Result<String, Box<dyn std::error::Error>> {
46 let token = self.token().await?;
47
48 let url = format!("{}{}", DELETE_MENU_URL, token);
49 let response = self.client.post(url).send().await?;
50 if let Err(err) = response.json::<BasicResponse>().await {
51 println!("json err: {:#?}", err);
52 return Err(err.into());
53 }
54
55 Ok("ok".to_string())
56 }
57}