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