use ruma::{
OwnedMxcUri, OwnedRoomAliasId, OwnedRoomId, OwnedUserId, UInt,
api::{auth_scheme::AccessToken, metadata, request, response},
events::room::{guest_access::GuestAccess, history_visibility::HistoryVisibility},
room::{JoinRuleKind, RoomType},
uint,
};
metadata! {
method: GET,
rate_limited: false,
authentication: AccessToken,
path: "/_synapse/admin/v1/rooms/{room_id}",
}
#[request]
pub struct Request {
#[ruma_api(path)]
pub room_id: OwnedRoomId,
}
#[response]
pub struct Response {
pub room_id: OwnedRoomId,
pub name: Option<String>,
pub topic: Option<String>,
pub avatar: Option<OwnedMxcUri>,
pub canonical_alias: Option<OwnedRoomAliasId>,
pub joined_members: UInt,
pub joined_local_members: UInt,
pub joined_local_devices: UInt,
pub version: Option<String>,
#[serde(deserialize_with = "ruma::serde::empty_string_as_none")]
pub creator: Option<OwnedUserId>,
pub encryption: Option<String>,
#[serde(deserialize_with = "crate::serde::bool_or_uint")]
pub federatable: bool,
#[serde(deserialize_with = "crate::serde::bool_or_uint")]
pub public: bool,
pub join_rules: Option<JoinRuleKind>,
pub guest_access: Option<GuestAccess>,
pub history_visibility: Option<HistoryVisibility>,
pub state_events: UInt,
pub room_type: Option<RoomType>,
#[serde(deserialize_with = "crate::serde::bool_or_uint")]
pub forgotten: bool,
}
impl Request {
pub fn new(room_id: OwnedRoomId) -> Self {
Self { room_id }
}
}
impl Response {
pub fn new(room_id: OwnedRoomId) -> Self {
Self {
room_id,
name: None,
topic: None,
avatar: None,
canonical_alias: None,
joined_members: uint!(0),
joined_local_members: uint!(0),
joined_local_devices: uint!(0),
version: None,
creator: None,
encryption: None,
federatable: false,
public: false,
join_rules: None,
guest_access: None,
history_visibility: None,
state_events: uint!(0),
room_type: None,
forgotten: false,
}
}
}