ruma_client_api/room/
get_summary.rs1pub mod msc3266 {
8 use js_int::UInt;
13 use ruma_common::{
14 api::{request, response, Metadata},
15 metadata,
16 room::RoomType,
17 space::SpaceRoomJoinRule,
18 EventEncryptionAlgorithm, OwnedMxcUri, OwnedRoomAliasId, OwnedRoomId, OwnedRoomOrAliasId,
19 OwnedServerName, RoomVersionId,
20 };
21 use ruma_events::room::member::MembershipState;
22
23 const METADATA: Metadata = metadata! {
24 method: GET,
25 rate_limited: false,
26 authentication: AccessTokenOptional,
27 history: {
28 unstable => "/_matrix/client/unstable/im.nheko.summary/rooms/:room_id_or_alias/summary",
29 }
30 };
31
32 #[request(error = crate::Error)]
34 pub struct Request {
35 #[ruma_api(path)]
37 pub room_id_or_alias: OwnedRoomOrAliasId,
38
39 #[serde(default, skip_serializing_if = "Vec::is_empty")]
43 #[ruma_api(query)]
44 pub via: Vec<OwnedServerName>,
45 }
46
47 #[response(error = crate::Error)]
49 pub struct Response {
50 pub room_id: OwnedRoomId,
52
53 #[serde(skip_serializing_if = "Option::is_none")]
55 pub canonical_alias: Option<OwnedRoomAliasId>,
56
57 #[serde(skip_serializing_if = "Option::is_none")]
59 pub avatar_url: Option<OwnedMxcUri>,
60
61 pub guest_can_join: bool,
63
64 #[serde(skip_serializing_if = "Option::is_none")]
66 pub name: Option<String>,
67
68 pub num_joined_members: UInt,
70
71 #[serde(skip_serializing_if = "Option::is_none")]
73 pub topic: Option<String>,
74
75 pub world_readable: bool,
77
78 pub join_rule: SpaceRoomJoinRule,
80
81 #[serde(skip_serializing_if = "Option::is_none")]
83 pub room_type: Option<RoomType>,
84
85 #[serde(skip_serializing_if = "Option::is_none")]
87 pub room_version: Option<RoomVersionId>,
88
89 #[serde(skip_serializing_if = "Option::is_none")]
95 pub membership: Option<MembershipState>,
96
97 #[serde(skip_serializing_if = "Option::is_none")]
99 pub encryption: Option<EventEncryptionAlgorithm>,
100 }
101
102 impl Request {
103 pub fn new(room_id_or_alias: OwnedRoomOrAliasId, via: Vec<OwnedServerName>) -> Self {
105 Self { room_id_or_alias, via }
106 }
107 }
108
109 impl Response {
110 pub fn new(
112 room_id: OwnedRoomId,
113 join_rule: SpaceRoomJoinRule,
114 guest_can_join: bool,
115 num_joined_members: UInt,
116 world_readable: bool,
117 ) -> Self {
118 Self {
119 room_id,
120 canonical_alias: None,
121 avatar_url: None,
122 guest_can_join,
123 name: None,
124 num_joined_members,
125 topic: None,
126 world_readable,
127 join_rule,
128 room_type: None,
129 room_version: None,
130 membership: None,
131 encryption: None,
132 }
133 }
134 }
135}