client-api: Update config and contact endpoints to the new API standards
This commit is contained in:
parent
cf9b83495c
commit
d1f409bcb6
@ -15,16 +15,18 @@ ruma_api! {
|
||||
requires_authentication: true,
|
||||
}
|
||||
|
||||
#[non_exhaustive]
|
||||
request: {
|
||||
/// User ID of user for whom to retrieve data.
|
||||
#[ruma_api(path)]
|
||||
pub user_id: UserId,
|
||||
pub user_id: &'a UserId,
|
||||
|
||||
/// Type of data to retrieve.
|
||||
#[ruma_api(path)]
|
||||
pub event_type: String,
|
||||
pub event_type: &'a str,
|
||||
}
|
||||
|
||||
#[non_exhaustive]
|
||||
response: {
|
||||
/// Account data content for the given type.
|
||||
#[ruma_api(body)]
|
||||
@ -33,3 +35,17 @@ ruma_api! {
|
||||
|
||||
error: crate::Error
|
||||
}
|
||||
|
||||
impl<'a> Request<'a> {
|
||||
/// Creates a new `Request` with the given user ID and event type.
|
||||
pub fn new(user_id: &'a UserId, event_type: &'a str) -> Self {
|
||||
Self { user_id, event_type }
|
||||
}
|
||||
}
|
||||
|
||||
impl Response {
|
||||
/// Creates a new `Response` with the given account data.
|
||||
pub fn new(account_data: Raw<AnyBasicEvent>) -> Self {
|
||||
Self { account_data }
|
||||
}
|
||||
}
|
||||
|
@ -15,20 +15,22 @@ ruma_api! {
|
||||
requires_authentication: true,
|
||||
}
|
||||
|
||||
#[non_exhaustive]
|
||||
request: {
|
||||
/// User ID of user for whom to retrieve data.
|
||||
#[ruma_api(path)]
|
||||
pub user_id: UserId,
|
||||
pub user_id: &'a UserId,
|
||||
|
||||
/// Room ID for which to retrieve data.
|
||||
#[ruma_api(path)]
|
||||
pub room_id: RoomId,
|
||||
pub room_id: &'a RoomId,
|
||||
|
||||
/// Type of data to retrieve.
|
||||
#[ruma_api(path)]
|
||||
pub event_type: String,
|
||||
pub event_type: &'a str,
|
||||
}
|
||||
|
||||
#[non_exhaustive]
|
||||
response: {
|
||||
/// Account data content for the given type.
|
||||
#[ruma_api(body)]
|
||||
@ -37,3 +39,17 @@ ruma_api! {
|
||||
|
||||
error: crate::Error
|
||||
}
|
||||
|
||||
impl<'a> Request<'a> {
|
||||
/// Creates a new `Request` with the given user ID, room ID and event type.
|
||||
pub fn new(user_id: &'a UserId, room_id: &'a RoomId, event_type: &'a str) -> Self {
|
||||
Self { user_id, room_id, event_type }
|
||||
}
|
||||
}
|
||||
|
||||
impl Response {
|
||||
/// Creates a new `Response` with the given account data.
|
||||
pub fn new(account_data: Raw<AnyBasicEvent>) -> Self {
|
||||
Self { account_data }
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ ruma_api! {
|
||||
requires_authentication: true,
|
||||
}
|
||||
|
||||
#[non_exhaustive]
|
||||
request: {
|
||||
/// Arbitrary JSON to store as config data.
|
||||
///
|
||||
@ -25,16 +26,32 @@ ruma_api! {
|
||||
///
|
||||
/// Custom types should be namespaced to avoid clashes.
|
||||
#[ruma_api(path)]
|
||||
pub event_type: String,
|
||||
pub event_type: &'a str,
|
||||
|
||||
/// The ID of the user to set account_data for.
|
||||
///
|
||||
/// The access token must be authorized to make requests for this user ID.
|
||||
#[ruma_api(path)]
|
||||
pub user_id: UserId,
|
||||
pub user_id: &'a UserId,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
#[non_exhaustive]
|
||||
response: {}
|
||||
|
||||
error: crate::Error
|
||||
}
|
||||
|
||||
impl<'a> Request<'a> {
|
||||
/// Creates a new `Request` with the given data, event type and user ID.
|
||||
pub fn new(data: Box<RawJsonValue>, event_type: &'a str, user_id: &'a UserId) -> Self {
|
||||
Self { data, event_type, user_id }
|
||||
}
|
||||
}
|
||||
|
||||
impl Response {
|
||||
/// Creates an empty `Response`.
|
||||
pub fn new() -> Self {
|
||||
Self
|
||||
}
|
||||
}
|
||||
|
@ -14,10 +14,11 @@ ruma_api! {
|
||||
requires_authentication: true,
|
||||
}
|
||||
|
||||
#[non_exhaustive]
|
||||
request: {
|
||||
/// Arbitrary JSON to store as config data.
|
||||
///
|
||||
/// To create a `Box<RawJsonValue>`, use `serde_json::value::to_raw_value`.
|
||||
/// To create a `RawJsonValue`, use `serde_json::value::to_raw_value`.
|
||||
#[ruma_api(body)]
|
||||
pub data: Box<RawJsonValue>,
|
||||
|
||||
@ -25,20 +26,41 @@ ruma_api! {
|
||||
///
|
||||
/// Custom types should be namespaced to avoid clashes.
|
||||
#[ruma_api(path)]
|
||||
pub event_type: String,
|
||||
pub event_type: &'a str,
|
||||
|
||||
/// The ID of the room to set account_data on.
|
||||
#[ruma_api(path)]
|
||||
pub room_id: RoomId,
|
||||
pub room_id: &'a RoomId,
|
||||
|
||||
/// The ID of the user to set account_data for.
|
||||
///
|
||||
/// The access token must be authorized to make requests for this user ID.
|
||||
#[ruma_api(path)]
|
||||
pub user_id: UserId,
|
||||
pub user_id: &'a UserId,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
#[non_exhaustive]
|
||||
response: {}
|
||||
|
||||
error: crate::Error
|
||||
}
|
||||
|
||||
impl<'a> Request<'a> {
|
||||
/// Creates a new `Request` with the given data, event type, room ID and user ID.
|
||||
pub fn new(
|
||||
data: Box<RawJsonValue>,
|
||||
event_type: &'a str,
|
||||
room_id: &'a RoomId,
|
||||
user_id: &'a UserId,
|
||||
) -> Self {
|
||||
Self { data, event_type, room_id, user_id }
|
||||
}
|
||||
}
|
||||
|
||||
impl Response {
|
||||
/// Creates an empty `Response`.
|
||||
pub fn new() -> Self {
|
||||
Self
|
||||
}
|
||||
}
|
||||
|
@ -16,8 +16,11 @@ ruma_api! {
|
||||
requires_authentication: true,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
#[non_exhaustive]
|
||||
request: {}
|
||||
|
||||
#[non_exhaustive]
|
||||
response: {
|
||||
/// A list of third party identifiers the homeserver has associated with the user's
|
||||
/// account.
|
||||
@ -28,8 +31,26 @@ ruma_api! {
|
||||
error: crate::Error
|
||||
}
|
||||
|
||||
impl Request {
|
||||
/// Creates an empty `Request`.
|
||||
pub fn new() -> Self {
|
||||
Self
|
||||
}
|
||||
}
|
||||
|
||||
impl Response {
|
||||
/// Creates a new `Response` with the given third party identifiers.
|
||||
pub fn new(threepids: Vec<ThirdPartyIdentifier>) -> Self {
|
||||
Self { threepids }
|
||||
}
|
||||
}
|
||||
|
||||
/// An identifier external to Matrix.
|
||||
///
|
||||
/// To create an instance of this type, first create a `ThirdPartyIdentifierInit` and convert it to
|
||||
/// this type using `ThirdPartyIdentifier::Init` / `.into()`.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
#[non_exhaustive]
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
pub struct ThirdPartyIdentifier {
|
||||
/// The third party identifier address.
|
||||
@ -47,6 +68,32 @@ pub struct ThirdPartyIdentifier {
|
||||
pub added_at: SystemTime,
|
||||
}
|
||||
|
||||
/// Initial set of fields of `ThirdPartyIdentifier`.
|
||||
///
|
||||
/// This struct will not be updated even if additional fields are added to `ThirdPartyIdentifier`
|
||||
/// in a new (non-breaking) release of the Matrix specification.
|
||||
#[derive(Debug)]
|
||||
pub struct ThirdPartyIdentifierInit {
|
||||
/// The third party identifier address.
|
||||
pub address: String,
|
||||
|
||||
/// The medium of third party identifier.
|
||||
pub medium: Medium,
|
||||
|
||||
/// The time when the identifier was validated by the identity server.
|
||||
pub validated_at: SystemTime,
|
||||
|
||||
/// The time when the homeserver associated the third party identifier with the user.
|
||||
pub added_at: SystemTime,
|
||||
}
|
||||
|
||||
impl From<ThirdPartyIdentifierInit> for ThirdPartyIdentifier {
|
||||
fn from(init: ThirdPartyIdentifierInit) -> Self {
|
||||
let ThirdPartyIdentifierInit { address, medium, validated_at, added_at } = init;
|
||||
ThirdPartyIdentifier { address, medium, validated_at, added_at }
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::time::{Duration, UNIX_EPOCH};
|
||||
|
@ -13,35 +13,59 @@ ruma_api! {
|
||||
requires_authentication: false,
|
||||
}
|
||||
|
||||
#[non_exhaustive]
|
||||
request: {
|
||||
/// Client-generated secret string used to protect this session.
|
||||
pub client_secret: String,
|
||||
pub client_secret: &'a str,
|
||||
|
||||
/// The email address.
|
||||
pub email: String,
|
||||
|
||||
/// A URL for the identity server to redirect the user to after
|
||||
/// validation is completed.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub next_link: Option<String>,
|
||||
pub email: &'a str,
|
||||
|
||||
/// Used to distinguish protocol level retries from requests to re-send
|
||||
/// the email.
|
||||
pub send_attempt: UInt,
|
||||
|
||||
/// A URL for the identity server to redirect the user to after
|
||||
/// validation is completed.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub next_link: Option<&'a str>,
|
||||
|
||||
/// The identity server to send the onward request to as a hostname with
|
||||
/// an appended colon and port number if the port is not the default.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub id_server: Option<String>,
|
||||
pub id_server: Option<&'a str>,
|
||||
|
||||
/// An access token previously registered with the identity server.
|
||||
///
|
||||
/// Required if an `id_server` is supplied.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub id_access_token: Option<String>,
|
||||
pub id_access_token: Option<&'a str>,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
#[non_exhaustive]
|
||||
response: {}
|
||||
|
||||
error: crate::Error
|
||||
}
|
||||
|
||||
impl<'a> Request<'a> {
|
||||
/// Creates a new `Request` with the given client secret, email and send-attempt counter.
|
||||
pub fn new(client_secret: &'a str, email: &'a str, send_attempt: UInt) -> Self {
|
||||
Self {
|
||||
client_secret,
|
||||
email,
|
||||
send_attempt,
|
||||
next_link: None,
|
||||
id_server: None,
|
||||
id_access_token: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Response {
|
||||
/// Creates an empty `Response`.
|
||||
pub fn new() -> Self {
|
||||
Self
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user