Borrow strings and identifiers in more endpoints
This commit is contained in:
parent
6f805d2584
commit
a74dddd93b
@ -2,6 +2,7 @@
|
||||
|
||||
use std::{collections::BTreeMap, fmt::Debug};
|
||||
|
||||
use ruma_api::Outgoing;
|
||||
use ruma_events::Algorithm;
|
||||
use ruma_identifiers::{DeviceId, DeviceKeyId, UserId};
|
||||
use serde::{Deserialize, Serialize};
|
||||
@ -69,21 +70,24 @@ pub enum OneTimeKey {
|
||||
}
|
||||
|
||||
/// A cross signing key.
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
pub struct CrossSigningKey {
|
||||
#[derive(Clone, Debug, Outgoing, Serialize)]
|
||||
pub struct CrossSigningKey<'a> {
|
||||
/// The ID of the user the key belongs to.
|
||||
pub user_id: UserId,
|
||||
pub user_id: &'a UserId,
|
||||
|
||||
/// What the key is used for.
|
||||
pub usage: Vec<KeyUsage>,
|
||||
pub usage: &'a [KeyUsage],
|
||||
|
||||
/// The public key. The object must have exactly one property.
|
||||
pub keys: BTreeMap<String, String>,
|
||||
|
||||
/// Signatures of the key. Only optional for master key.
|
||||
#[serde(skip_serializing_if = "BTreeMap::is_empty")]
|
||||
pub signatures: BTreeMap<UserId, BTreeMap<String, String>>,
|
||||
}
|
||||
|
||||
/// The usage of a cross signing key.
|
||||
#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
|
||||
#[derive(Clone, Copy, Debug, Deserialize, Serialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum KeyUsage {
|
||||
/// Master key.
|
||||
|
@ -17,21 +17,21 @@ ruma_api! {
|
||||
/// The desired start point of the list.
|
||||
/// Should be the next_batch field from a response to an earlier call to /sync.
|
||||
#[ruma_api(query)]
|
||||
pub from: String,
|
||||
pub from: &'a str,
|
||||
|
||||
/// The desired end point of the list.
|
||||
/// Should be the next_batch field from a recent call to /sync - typically the most recent such call.
|
||||
#[ruma_api(query)]
|
||||
pub to: String,
|
||||
pub to: &'a str,
|
||||
}
|
||||
|
||||
response: {
|
||||
/// The Matrix User IDs of all users who updated their device identity keys.
|
||||
pub changed: Vec<UserId>,
|
||||
pub changed: &'a [UserId],
|
||||
|
||||
/// The Matrix User IDs of all users who may have left all the end-to-end
|
||||
/// encrypted rooms they previously shared with the user.
|
||||
pub left: Vec<UserId>
|
||||
pub left: &'a [UserId],
|
||||
}
|
||||
|
||||
error: crate::Error
|
||||
|
@ -38,7 +38,7 @@ ruma_api! {
|
||||
/// ensure its response contains the keys advertised by the notification
|
||||
/// in that sync.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub token: Option<String>,
|
||||
pub token: Option<&'a str>,
|
||||
}
|
||||
|
||||
response: {
|
||||
|
@ -22,17 +22,17 @@ ruma_api! {
|
||||
|
||||
/// The user's master key.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub master_key: Option<CrossSigningKey>,
|
||||
pub master_key: Option<CrossSigningKey<'a>>,
|
||||
|
||||
/// The user's self-signing key. Must be signed with the accompanied master, or by the
|
||||
/// user's most recently uploaded master key if no master key is included in the request.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub self_signing_key: Option<CrossSigningKey>,
|
||||
pub self_signing_key: Option<CrossSigningKey<'a>>,
|
||||
|
||||
/// The user's user-signing key. Must be signed with the accompanied master, or by the
|
||||
/// user's most recently uploaded master key if no master key is included in the request.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub user_signing_key: Option<CrossSigningKey>,
|
||||
pub user_signing_key: Option<CrossSigningKey<'a>>,
|
||||
}
|
||||
|
||||
response: {}
|
||||
|
@ -26,7 +26,7 @@ ruma_api! {
|
||||
|
||||
/// A request identifier unique to the access token used to send the request.
|
||||
#[ruma_api(path)]
|
||||
pub txn_id: String,
|
||||
pub txn_id: &'a str,
|
||||
|
||||
/// A map of users to devices to a content for a message event to be
|
||||
/// sent to the user's device. Individual message events can be sent
|
||||
|
@ -1,9 +1,9 @@
|
||||
//! [POST /_matrix/client/r0/user_directory/search](https://matrix.org/docs/spec/client_server/r0.6.1#post-matrix-client-r0-user-directory-search)
|
||||
|
||||
use js_int::{uint, UInt};
|
||||
use ruma_api::ruma_api;
|
||||
use ruma_api::{ruma_api, Outgoing};
|
||||
use ruma_identifiers::UserId;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde::Serialize;
|
||||
|
||||
ruma_api! {
|
||||
metadata: {
|
||||
@ -17,7 +17,7 @@ ruma_api! {
|
||||
|
||||
request: {
|
||||
/// The term to search for.
|
||||
pub search_term: String,
|
||||
pub search_term: &'a str,
|
||||
|
||||
/// The maximum number of results to return.
|
||||
///
|
||||
@ -28,7 +28,7 @@ ruma_api! {
|
||||
|
||||
response: {
|
||||
/// Ordered by rank and then whether or not profile info is available.
|
||||
pub results: Vec<User>,
|
||||
pub results: &'a [User<'a>],
|
||||
|
||||
/// Indicates if the result list has been truncated by the limit.
|
||||
pub limited: bool,
|
||||
@ -46,16 +46,16 @@ fn is_default_limit(limit: &UInt) -> bool {
|
||||
}
|
||||
|
||||
/// User data as result of a search.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct User {
|
||||
#[derive(Clone, Debug, Outgoing, Serialize)]
|
||||
pub struct User<'a> {
|
||||
/// The user's matrix user ID.
|
||||
pub user_id: UserId,
|
||||
pub user_id: &'a UserId,
|
||||
|
||||
/// The display name of the user, if one exists.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub display_name: Option<String>,
|
||||
pub display_name: Option<&'a str>,
|
||||
|
||||
/// The avatar url, as an MXC, if one exists.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub avatar_url: Option<String>,
|
||||
pub avatar_url: Option<&'a str>,
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user