ruma_client_api/membership/
mutual_rooms.rs1pub mod unstable {
6 use ruma_common::{
11 OwnedRoomId, OwnedUserId,
12 api::{auth_scheme::AccessToken, request, response},
13 metadata,
14 };
15
16 metadata! {
17 method: GET,
18 rate_limited: true,
19 authentication: AccessToken,
20 history: {
21 unstable("uk.half-shot.msc2666.query_mutual_rooms") => "/_matrix/client/unstable/uk.half-shot.msc2666/user/mutual_rooms",
22 }
23 }
24
25 #[request(error = crate::Error)]
27 pub struct Request {
28 #[ruma_api(query)]
30 pub user_id: OwnedUserId,
31
32 #[serde(skip_serializing_if = "Option::is_none")]
35 #[ruma_api(query)]
36 pub batch_token: Option<String>,
37 }
38
39 #[response(error = crate::Error)]
41 pub struct Response {
42 pub joined: Vec<OwnedRoomId>,
44
45 #[serde(skip_serializing_if = "Option::is_none")]
47 pub next_batch_token: Option<String>,
48 }
49
50 impl Request {
51 pub fn new(user_id: OwnedUserId) -> Self {
53 Self { user_id, batch_token: None }
54 }
55
56 pub fn with_token(user_id: OwnedUserId, token: String) -> Self {
58 Self { user_id, batch_token: Some(token) }
59 }
60 }
61
62 impl Response {
63 pub fn new(joined: Vec<OwnedRoomId>) -> Self {
65 Self { joined, next_batch_token: None }
66 }
67
68 pub fn with_token(joined: Vec<OwnedRoomId>, token: String) -> Self {
70 Self { joined, next_batch_token: Some(token) }
71 }
72 }
73}