rive_http/channels/
messaging.rs1use crate::prelude::*;
2use rive_models::{
3 data::{
4 BulkDeleteMessagesData, EditMessageData, FetchMessagesData, SearchForMessagesData,
5 SendMessageData,
6 },
7 message::{BulkMessageResponse, Message},
8};
9
10impl Client {
11 pub async fn acknowledge_message(
13 &self,
14 channel_id: impl Into<String>,
15 message_id: impl Into<String>,
16 ) -> Result<()> {
17 self.client
18 .put(ep!(
19 self,
20 "/channels/{}/ack/{}",
21 channel_id.into(),
22 message_id.into()
23 ))
24 .auth(&self.authentication)
25 .send()
26 .await?
27 .process_error()
28 .await?;
29 Ok(())
30 }
31
32 pub async fn fetch_messages(
34 &self,
35 channel_id: impl Into<String>,
36 data: FetchMessagesData,
37 ) -> Result<BulkMessageResponse> {
38 Ok(self
39 .client
40 .get(ep!(self, "/channels/{}/messages", channel_id.into()))
41 .auth(&self.authentication)
42 .query(&data)
43 .send()
44 .await?
45 .process_error()
46 .await?
47 .json()
48 .await?)
49 }
50
51 pub async fn send_message(
53 &self,
54 channel_id: impl Into<String>,
55 data: SendMessageData,
56 ) -> Result<Message> {
57 Ok(self
58 .client
59 .post(ep!(self, "/channels/{}/messages", channel_id.into()))
60 .auth(&self.authentication)
61 .json(&data)
62 .send()
63 .await?
64 .process_error()
65 .await?
66 .json()
67 .await?)
68 }
69
70 pub async fn search_for_messages(
72 &self,
73 channel_id: impl Into<String>,
74 data: SearchForMessagesData,
75 ) -> Result<Message> {
76 Ok(self
77 .client
78 .post(ep!(self, "/channels/{}/messages/search", channel_id.into()))
79 .auth(&self.authentication)
80 .json(&data)
81 .send()
82 .await?
83 .process_error()
84 .await?
85 .json()
86 .await?)
87 }
88
89 pub async fn fetch_message(
91 &self,
92 channel_id: impl Into<String>,
93 message_id: impl Into<String>,
94 ) -> Result<Message> {
95 Ok(self
96 .client
97 .get(ep!(
98 self,
99 "/channels/{}/messages/{}",
100 channel_id.into(),
101 message_id.into()
102 ))
103 .auth(&self.authentication)
104 .send()
105 .await?
106 .process_error()
107 .await?
108 .json()
109 .await?)
110 }
111
112 pub async fn delete_message(
114 &self,
115 channel_id: impl Into<String>,
116 message_id: impl Into<String>,
117 ) -> Result<()> {
118 self.client
119 .delete(ep!(
120 self,
121 "/channels/{}/messages/{}",
122 channel_id.into(),
123 message_id.into()
124 ))
125 .auth(&self.authentication)
126 .send()
127 .await?
128 .process_error()
129 .await?;
130 Ok(())
131 }
132
133 pub async fn edit_message(
134 &self,
135 channel_id: impl Into<String>,
136 message_id: impl Into<String>,
137 data: EditMessageData,
138 ) -> Result<Message> {
139 Ok(self
140 .client
141 .patch(ep!(
142 self,
143 "/channels/{}/messages/{}",
144 channel_id.into(),
145 message_id.into()
146 ))
147 .auth(&self.authentication)
148 .json(&data)
149 .send()
150 .await?
151 .process_error()
152 .await?
153 .json()
154 .await?)
155 }
156
157 pub async fn bulk_delete_messages(
163 &self,
164 channel_id: impl Into<String>,
165 data: BulkDeleteMessagesData,
166 ) -> Result<()> {
167 self.client
168 .delete(ep!(self, "/channels/{}/messages/bulk", channel_id.into(),))
169 .auth(&self.authentication)
170 .json(&data)
171 .send()
172 .await?
173 .process_error()
174 .await?;
175 Ok(())
176 }
177}