ruma_client_api/directory/
get_public_rooms_filtered.rs1pub mod v3 {
6 use js_int::UInt;
11 use ruma_common::{
12 OwnedServerName,
13 api::{auth_scheme::AccessToken, request, response},
14 directory::{Filter, PublicRoomsChunk, RoomNetwork},
15 metadata,
16 };
17
18 metadata! {
19 method: POST,
20 rate_limited: false,
21 authentication: AccessToken,
22 history: {
23 1.0 => "/_matrix/client/r0/publicRooms",
24 1.1 => "/_matrix/client/v3/publicRooms",
25 }
26 }
27
28 #[request(error = crate::Error)]
30 #[derive(Default)]
31 pub struct Request {
32 #[serde(skip_serializing_if = "Option::is_none")]
36 #[ruma_api(query)]
37 pub server: Option<OwnedServerName>,
38
39 #[serde(skip_serializing_if = "Option::is_none")]
41 pub limit: Option<UInt>,
42
43 #[serde(skip_serializing_if = "Option::is_none")]
45 pub since: Option<String>,
46
47 #[serde(default, skip_serializing_if = "Filter::is_empty")]
49 pub filter: Filter,
50
51 #[serde(flatten, skip_serializing_if = "ruma_common::serde::is_default")]
53 pub room_network: RoomNetwork,
54 }
55
56 #[response(error = crate::Error)]
58 #[derive(Default)]
59 pub struct Response {
60 pub chunk: Vec<PublicRoomsChunk>,
62
63 #[serde(skip_serializing_if = "Option::is_none")]
65 pub next_batch: Option<String>,
66
67 #[serde(skip_serializing_if = "Option::is_none")]
69 pub prev_batch: Option<String>,
70
71 #[serde(skip_serializing_if = "Option::is_none")]
73 pub total_room_count_estimate: Option<UInt>,
74 }
75
76 impl Request {
77 pub fn new() -> Self {
79 Default::default()
80 }
81 }
82
83 impl Response {
84 pub fn new() -> Self {
86 Default::default()
87 }
88 }
89}