line_bot_messaging_api/api/
richmenu_user.rs

1use crate::{LineApiResponse, LineClient};
2use serde_derive::{Deserialize, Serialize};
3use serde_json::json;
4
5impl LineClient {
6    // POST   /v2/bot/user/{userId}/richmenu/{richMenuId}
7    /// https://developers.line.biz/ja/reference/messaging-api/#create-rich-menu
8    pub async fn rich_menu_user_link_menu(
9        &self,
10        rich_menu_id: &str,
11        user_id: &str,
12    ) -> LineApiResponse<LineApiRichMenuUserEmptyResponse> {
13        self.http_post(
14            format!(
15                "https://api.line.me/v2/bot/user/{}/richmenu/{}",
16                user_id, rich_menu_id
17            )
18            .as_str(),
19            &json!({}),
20        )
21        .await
22    }
23    /// https://developers.line.biz/ja/reference/messaging-api/#link-rich-menu-to-users
24    // POST   /v2/bot/richmenu/bulk/link
25    pub async fn rich_menu_user_link_rich_menu_bulk(
26        &self,
27        rich_menu_id: &str,
28        user_id: Vec<String>,
29    ) -> LineApiResponse<LineApiRichMenuUserEmptyResponse> {
30        self.http_post(
31            "https://api.line.me/v2/bot/richmenu/bulk/link",
32            &json!({
33                "richMenuId": rich_menu_id,
34                "userIds": user_id,
35            }),
36        )
37        .await
38    }
39    // GET    /v2/bot/user/{userId}/richmenu
40
41    /// https://developers.line.biz/ja/reference/messaging-api/#create-rich-menu
42    pub async fn rich_menu_user_get_user_rich_menu_id(
43        &self,
44        user_id: &str,
45    ) -> LineApiResponse<LineApiRichMenuUserGetUserRichMenuId> {
46        self.http_get(
47            format!("https://api.line.me/v2/bot/user/{}/richmenu", user_id).as_str(),
48            &json!({}),
49        )
50        .await
51    }
52    // DELETE /v2/bot/user/{userId}/richmenu
53    pub async fn rich_menu_user_unlink_user_rich_menu(
54        &self,
55        user_id: &str,
56    ) -> LineApiResponse<LineApiRichMenuUserEmptyResponse> {
57        self.http_delete(
58            format!("https://api.line.me/v2/bot/user/{}/richmenu", user_id).as_str(),
59            &json!({}),
60        )
61        .await
62    }
63    // POST   /v2/bot/richmenu/bulk/unlink
64    pub async fn rich_menu_user_unlink_menu_bulk(
65        &self,
66        user_id: Vec<String>,
67    ) -> LineApiResponse<LineApiRichMenuUserEmptyResponse> {
68        self.http_post(
69            "https://api.line.me/v2/bot/richmenu/bulk/unlink",
70            &json!({
71                "userIds": user_id,
72            }),
73        )
74        .await
75    }
76    // POST   /v2/bot/richmenu/batch
77    // GET    /v2/bot/richmenu/progress/batch
78    // POST   /v2/bot/richmenu/validate/batch
79}
80
81#[derive(Debug, Default, Deserialize, Serialize, Clone)]
82pub struct LineApiRichMenuUserEmptyResponse {}
83
84#[derive(Debug, Default, Deserialize, Serialize, Clone)]
85pub struct LineApiRichMenuUserGetUserRichMenuId {
86    #[serde(rename = "richMenuId")]
87    pub rich_menu_id: String,
88}