From 27ec031689d4c76b6a419b9b37c228f8586bcdb9 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Sat, 20 Apr 2019 18:50:41 +0200 Subject: [PATCH] Add /rooms/{roomId}/joined_members endpoint --- src/r0/membership.rs | 1 + src/r0/membership/joined_members.rs | 40 +++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/r0/membership/joined_members.rs diff --git a/src/r0/membership.rs b/src/r0/membership.rs index b1b9ebb5..d86584f6 100644 --- a/src/r0/membership.rs +++ b/src/r0/membership.rs @@ -5,6 +5,7 @@ pub mod forget_room; pub mod invite_user; pub mod join_room_by_id; pub mod join_room_by_id_or_alias; +pub mod joined_members; pub mod joined_rooms; pub mod kick_user; pub mod leave_room; diff --git a/src/r0/membership/joined_members.rs b/src/r0/membership/joined_members.rs new file mode 100644 index 00000000..d7f7028e --- /dev/null +++ b/src/r0/membership/joined_members.rs @@ -0,0 +1,40 @@ +//! [GET /_matrix/client/r0/rooms/{roomId}/joined_members](https://matrix.org/docs/spec/client_server/r0.4.0.html#get-matrix-client-r0-rooms-roomid-joined-members) + +use std::collections::HashMap; + +use ruma_api_macros::ruma_api; +use ruma_identifiers::{RoomId, UserId}; +use serde::{Deserialize, Serialize}; + +ruma_api! { + metadata { + description: "Get a map of user ids to member info objects for members of the room. Primarily for use in Application Services.", + method: GET, + name: "joined_members", + path: "/_matrix/client/r0/rooms/:room_id/joined_members", + rate_limited: false, + requires_authentication: true, + } + + request { + /// The room to get the members of. + #[ruma_api(path)] + pub room_id: RoomId, + } + + response { + /// A list of the rooms the user is in, i.e. + /// the ID of each room in which the user has joined membership. + pub joined: HashMap, + } +} + +// TODO: Find out whether display_name and avatar_url are optional +/// Information about a room member. +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct RoomMember { + /// The display name of the user. + pub display_name: String, + /// The mxc avatar url of the user. + pub avatar_url: Option, +}