diff --git a/CHANGELOG.md b/CHANGELOG.md index 8679fff3..65349774 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ Improvements: * Add an `Error` type that represents the well-known errors in the client-server API * Add OpenID token request endpoint. * Add `r0::client_exchange::send_event_to_device` (introduced in r0.3.0) +* Add endpoints to retrieve account_data (introduced in r0.5.0) Breaking changes: diff --git a/src/r0/config.rs b/src/r0/config.rs index 82b2df26..425c22ef 100644 --- a/src/r0/config.rs +++ b/src/r0/config.rs @@ -1,4 +1,6 @@ //! Endpoints for client configuration. +pub mod get_global_account_data; +pub mod get_room_account_data; pub mod set_global_account_data; pub mod set_room_account_data; diff --git a/src/r0/config/get_global_account_data.rs b/src/r0/config/get_global_account_data.rs new file mode 100644 index 00000000..342fa1c0 --- /dev/null +++ b/src/r0/config/get_global_account_data.rs @@ -0,0 +1,32 @@ +//! [GET /_matrix/client/r0/user/{userId}/account_data/{type}](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-user-userid-account-data-type) + +use ruma_api::ruma_api; +use ruma_events::{collections::only, EventResult}; +use ruma_identifiers::UserId; + +ruma_api! { + metadata { + description: "Gets global account data for a user.", + name: "get_global_account_data", + method: GET, + path: "/_matrix/client/r0/user/:user_id/account_data/:event_type", + rate_limited: false, + requires_authentication: true, + } + + request { + /// User ID of user for whom to retrieve data. + #[ruma_api(path)] + user_id: UserId, + /// Type of data to retrieve. + #[ruma_api(path)] + event_type: String, + } + + response { + /// Account data content for the given type. + #[ruma_api(body)] + #[wrap_incoming(with EventResult)] + account_data: only::Event, + } +} diff --git a/src/r0/config/get_room_account_data.rs b/src/r0/config/get_room_account_data.rs new file mode 100644 index 00000000..f2ea38e9 --- /dev/null +++ b/src/r0/config/get_room_account_data.rs @@ -0,0 +1,35 @@ +//! [GET /_matrix/client/r0/user/{userId}/rooms/{roomId}/account_data/{type}](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-user-userid-rooms-roomid-account-data-type) + +use ruma_api::ruma_api; +use ruma_events::{collections::only, EventResult}; +use ruma_identifiers::{RoomId, UserId}; + +ruma_api! { + metadata { + description: "Gets account data room for a user for a given room", + name: "get_room_account_data", + method: GET, + path: "/_matrix/client/r0/user/:user_id/rooms/:room_id/account_data/:event_type", + rate_limited: false, + requires_authentication: true, + } + + request { + /// User ID of user for whom to retrieve data. + #[ruma_api(path)] + user_id: UserId, + /// Room ID for which to retrieve data. + #[ruma_api(path)] + room_id: RoomId, + /// Type of data to retrieve. + #[ruma_api(path)] + event_type: String, + } + + response { + /// Account data content for the given type. + #[ruma_api(body)] + #[wrap_incoming(with EventResult)] + account_data: only::Event, + } +}