open_lark/service/im/v1/buzz_messages/
mod.rs1use reqwest::Method;
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5use crate::impl_full_service;
6use crate::{
7 core::{
8 api_req::ApiRequest,
9 api_resp::{ApiResponseTrait, BaseResponse, ResponseFormat},
10 config::Config,
11 constants::AccessTokenType,
12 endpoints::EndpointBuilder,
13 http::Transport,
14 req_option::RequestOption,
15 standard_response::StandardResponse,
16 SDKResult,
17 },
18 service::im::v1::models::UserIdType,
19};
20
21pub struct BuzzMessagesService {
23 pub config: Config,
24}
25
26#[derive(Debug, Serialize, Deserialize)]
28pub struct UrgentAppRequest {
29 pub user_id_list: Vec<String>,
31}
32
33impl_full_service!(BuzzMessagesService, "im.buzz_messages", "v1");
35
36#[derive(Debug, Serialize, Deserialize)]
38pub struct UrgentSmsRequest {
39 pub user_id_list: Vec<String>,
41}
42
43#[derive(Debug, Serialize, Deserialize)]
45pub struct UrgentPhoneRequest {
46 pub user_id_list: Vec<String>,
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct UrgentResponse {
53 pub invalid_user_id_list: Vec<String>,
55}
56
57impl ApiResponseTrait for UrgentResponse {
58 fn data_format() -> ResponseFormat {
59 ResponseFormat::Data
60 }
61}
62
63impl BuzzMessagesService {
64 pub fn new(config: Config) -> Self {
65 Self { config }
66 }
67
68 pub async fn urgent_app(
70 &self,
71 message_id: &str,
72 user_id_type: UserIdType,
73 request: UrgentAppRequest,
74 option: Option<RequestOption>,
75 ) -> SDKResult<UrgentResponse> {
76 let api_req = ApiRequest {
77 http_method: Method::PATCH,
78 api_path: EndpointBuilder::replace_param(
79 crate::core::endpoints::im::IM_V1_MESSAGE_URGENT_APP,
80 "message_id",
81 message_id,
82 ),
83 supported_access_token_types: vec![AccessTokenType::Tenant, AccessTokenType::User],
84 query_params: HashMap::from([("user_id_type", user_id_type.as_str().to_string())]),
85 body: serde_json::to_vec(&request)?,
86 ..Default::default()
87 };
88
89 let api_resp: BaseResponse<UrgentResponse> =
90 Transport::request(api_req, &self.config, option).await?;
91 api_resp.into_result()
92 }
93
94 pub async fn urgent_sms(
96 &self,
97 message_id: &str,
98 user_id_type: UserIdType,
99 request: UrgentSmsRequest,
100 option: Option<RequestOption>,
101 ) -> SDKResult<UrgentResponse> {
102 let api_req = ApiRequest {
103 http_method: Method::PATCH,
104 api_path: EndpointBuilder::replace_param(
105 crate::core::endpoints::im::IM_V1_MESSAGE_URGENT_SMS,
106 "message_id",
107 message_id,
108 ),
109 supported_access_token_types: vec![AccessTokenType::Tenant, AccessTokenType::User],
110 query_params: HashMap::from([("user_id_type", user_id_type.as_str().to_string())]),
111 body: serde_json::to_vec(&request)?,
112 ..Default::default()
113 };
114
115 let api_resp: BaseResponse<UrgentResponse> =
116 Transport::request(api_req, &self.config, option).await?;
117 api_resp.into_result()
118 }
119
120 pub async fn urgent_phone(
122 &self,
123 message_id: &str,
124 user_id_type: UserIdType,
125 request: UrgentPhoneRequest,
126 option: Option<RequestOption>,
127 ) -> SDKResult<UrgentResponse> {
128 let api_req = ApiRequest {
129 http_method: Method::PATCH,
130 api_path: EndpointBuilder::replace_param(
131 crate::core::endpoints::im::IM_V1_MESSAGE_URGENT_PHONE,
132 "message_id",
133 message_id,
134 ),
135 supported_access_token_types: vec![AccessTokenType::Tenant, AccessTokenType::User],
136 query_params: HashMap::from([("user_id_type", user_id_type.as_str().to_string())]),
137 body: serde_json::to_vec(&request)?,
138 ..Default::default()
139 };
140
141 let api_resp: BaseResponse<UrgentResponse> =
142 Transport::request(api_req, &self.config, option).await?;
143 api_resp.into_result()
144 }
145}