open_lark/service/im/v1/message/
send.rs1use reqwest::Method;
2
3use crate::{
4 core::{
5 api_resp::BaseResponse, constants::AccessTokenType, endpoints::EndpointBuilder,
6 http::Transport, req_option::RequestOption, standard_response::StandardResponse, SDKResult,
7 },
8 service::im::v1::message::{CreateMessageResp, Message},
9};
10
11use crate::service::im::v1::message::MessageService;
13
14impl MessageService {
15 pub async fn create(
22 &self,
23 create_message_request: crate::service::im::v1::message::builders::CreateMessageRequest,
24 option: Option<RequestOption>,
25 ) -> SDKResult<Message> {
26 let mut api_req = create_message_request.api_req;
27 api_req.http_method = Method::POST;
28 api_req.api_path = crate::core::endpoints::im::IM_V1_SEND_MESSAGE.to_string();
29 api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::User];
30
31 let api_resp: BaseResponse<CreateMessageResp> =
32 Transport::request(api_req, &self.config, option).await?;
33
34 api_resp.into_result().map(|resp| resp.data)
35 }
36
37 pub async fn delete(&self, message_id: &str, option: Option<RequestOption>) -> SDKResult<()> {
44 let api_req = crate::core::api_req::ApiRequest {
45 http_method: Method::DELETE,
46 api_path: EndpointBuilder::replace_param(
47 crate::core::endpoints::im::IM_V1_DELETE_MESSAGE,
48 "message_id",
49 message_id,
50 ),
51 supported_access_token_types: vec![AccessTokenType::Tenant, AccessTokenType::User],
52 ..Default::default()
53 };
54
55 let api_resp: BaseResponse<serde_json::Value> =
56 Transport::request(api_req, &self.config, option).await?;
57
58 api_resp.into_result().map(|_| ())
59 }
60
61 pub async fn update(
67 &self,
68 message_id: &str,
69 update_message_request: crate::service::im::v1::message::builders::UpdateMessageRequest,
70 option: Option<RequestOption>,
71 ) -> SDKResult<Message> {
72 let mut api_req = update_message_request.api_req;
73 api_req.http_method = Method::PATCH;
74 api_req.api_path = EndpointBuilder::replace_param(
75 crate::core::endpoints::im::IM_V1_UPDATE_MESSAGE,
76 "message_id",
77 message_id,
78 );
79 api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::User];
80
81 let api_resp: BaseResponse<CreateMessageResp> =
82 Transport::request(api_req, &self.config, option).await?;
83
84 api_resp.into_result().map(|resp| resp.data)
85 }
86
87 pub async fn reply(
93 &self,
94 message_id: &str,
95 reply_message_request: crate::service::im::v1::message::builders::CreateMessageRequest,
96 option: Option<RequestOption>,
97 ) -> SDKResult<Message> {
98 let mut api_req = reply_message_request.api_req;
99 api_req.http_method = Method::POST;
100 api_req.api_path = EndpointBuilder::replace_param(
101 crate::core::endpoints::im::IM_V1_REPLY_MESSAGE,
102 "message_id",
103 message_id,
104 );
105 api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::User];
106
107 let api_resp: BaseResponse<CreateMessageResp> =
108 Transport::request(api_req, &self.config, option).await?;
109
110 api_resp.into_result().map(|resp| resp.data)
111 }
112}