1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
use crate::{
client::Client,
core::{
changes::{ChangesRequest, ChangesResponse},
get::GetRequest,
request::{Arguments, Request},
response::ThreadGetResponse,
},
Method,
};
use super::Thread;
impl Client {
pub async fn thread_get(&self, id: &str) -> crate::Result<Option<Thread>> {
let mut request = self.build();
request.get_thread().ids([id]);
request
.send_single::<ThreadGetResponse>()
.await
.map(|mut r| r.take_list().pop())
}
}
impl Request<'_> {
pub fn get_thread(&mut self) -> &mut GetRequest<Thread> {
self.add_method_call(
Method::GetThread,
Arguments::thread_get(self.params(Method::GetThread)),
)
.thread_get_mut()
}
pub async fn send_get_thread(self) -> crate::Result<ThreadGetResponse> {
self.send_single().await
}
pub fn changes_thread(&mut self, since_state: impl Into<String>) -> &mut ChangesRequest {
self.add_method_call(
Method::ChangesThread,
Arguments::changes(self.params(Method::ChangesThread), since_state.into()),
)
.changes_mut()
}
pub async fn send_changes_thread(self) -> crate::Result<ChangesResponse<Thread>> {
self.send_single().await
}
}