From 4cf4aa6ef74b25ad8c14d99d7774129f023df163 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Sun, 24 May 2020 22:40:33 -0500 Subject: [PATCH] Add room information query endpoint. --- CHANGELOG.md | 1 + src/lib.rs | 1 + src/query.rs | 3 +++ src/query/get_room_information/mod.rs | 2 ++ src/query/get_room_information/v1.rs | 28 +++++++++++++++++++++++++++ 5 files changed, 35 insertions(+) create mode 100644 src/query.rs create mode 100644 src/query/get_room_information/mod.rs create mode 100644 src/query/get_room_information/v1.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index a3598361..bed78bb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ Improvements: create_join_event::v1, create_join_event_template::v1 }, + query::get_room_information::v1, version::get_server_version::v1 ``` diff --git a/src/lib.rs b/src/lib.rs index ea235b73..ef6a1c66 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -15,6 +15,7 @@ mod serde; pub mod directory; pub mod discovery; pub mod membership; +pub mod query; /// A 'persistent data unit' (event) for room versions 3 and beyond. #[derive(Deserialize, Serialize)] diff --git a/src/query.rs b/src/query.rs new file mode 100644 index 00000000..7dc27cdb --- /dev/null +++ b/src/query.rs @@ -0,0 +1,3 @@ +//! Endpoints to retrieve information from a homeserver about a resource. + +pub mod get_room_information; diff --git a/src/query/get_room_information/mod.rs b/src/query/get_room_information/mod.rs new file mode 100644 index 00000000..bf4d11f2 --- /dev/null +++ b/src/query/get_room_information/mod.rs @@ -0,0 +1,2 @@ +//! Endpoint to query room information with a room alias. +pub mod v1; diff --git a/src/query/get_room_information/v1.rs b/src/query/get_room_information/v1.rs new file mode 100644 index 00000000..77c7219a --- /dev/null +++ b/src/query/get_room_information/v1.rs @@ -0,0 +1,28 @@ +//! [GET /_matrix/federation/v1/query/directory](https://matrix.org/docs/spec/server_server/r0.1.3#get-matrix-federation-v1-query-directory) + +use ruma_api::ruma_api; +use ruma_identifiers::RoomId; + +ruma_api! { + metadata { + description: "Get mapped room ID and resident homeservers for a given room alias.", + name: "get_room_information", + method: GET, + path: "/_matrix/federation/v1/query/directory", + rate_limited: false, + requires_authentication: true, + } + + request { + /// Room alias to query. + #[ruma_api(query)] + pub room_alias: String, + } + + response { + /// Room ID mapped to queried alias. + pub room_id: RoomId, + /// An array of server names that are likely to hold the given room. + pub servers: Vec, + } +}