diff --git a/CHANGELOG.md b/CHANGELOG.md index e8b3ad5e..20961308 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ Breaking changes: Improvements: * Add method `into_event_content` for `r0::room::create_room::CreationContent` +* Add room visibility endpoints: `r0::directory::{get_room_visibility, set_room_visibility}`. # 0.9.0 diff --git a/src/r0/directory.rs b/src/r0/directory.rs index 16a3664e..e6ae3669 100644 --- a/src/r0/directory.rs +++ b/src/r0/directory.rs @@ -2,6 +2,8 @@ pub mod get_public_rooms; pub mod get_public_rooms_filtered; +pub mod get_room_visibility; +pub mod set_room_visibility; use js_int::UInt; use ruma_identifiers::{RoomAliasId, RoomId}; diff --git a/src/r0/directory/get_room_visibility.rs b/src/r0/directory/get_room_visibility.rs new file mode 100644 index 00000000..19ba1c4e --- /dev/null +++ b/src/r0/directory/get_room_visibility.rs @@ -0,0 +1,29 @@ +//! [GET /_matrix/client/r0/directory/list/room/{roomId}](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-directory-list-room-roomid) + +use ruma_api::ruma_api; + +use crate::r0::room::Visibility; + +ruma_api! { + metadata { + description: "Get the visibility of a public room on a directory.", + name: "get_room_visibility", + method: GET, + path: "/_matrix/client/r0/directory/list/room/:room_id", + rate_limited: false, + requires_authentication: false, + } + + request { + /// The ID of the room of which to request the visibility. + #[ruma_api(path)] + pub room_id: String, + } + + response { + /// Visibility of the room. + pub visibility: Visibility, + } + + error: crate::Error +} diff --git a/src/r0/directory/set_room_visibility.rs b/src/r0/directory/set_room_visibility.rs new file mode 100644 index 00000000..a8d3ad35 --- /dev/null +++ b/src/r0/directory/set_room_visibility.rs @@ -0,0 +1,29 @@ +//! [PUT /_matrix/client/r0/directory/list/room/{roomId}](https://matrix.org/docs/spec/client_server/r0.6.0#put-matrix-client-r0-directory-list-room-roomid) + +use ruma_api::ruma_api; + +use crate::r0::room::Visibility; + +ruma_api! { + metadata { + description: "Set the visibility of a public room on a directory.", + name: "set_room_visibility", + method: PUT, + path: "/_matrix/client/r0/directory/list/room/:room_id", + rate_limited: false, + requires_authentication: true, + } + + request { + /// The ID of the room of which to set the visibility. + #[ruma_api(path)] + pub room_id: String, + + /// New visibility setting for the room. + pub visibility: Visibility, + } + + response {} + + error: crate::Error +}