Add missing docs, fix a bunch of bugs and inconsistencies.
This commit is contained in:
parent
c447a612d3
commit
6aceca259e
@ -2,9 +2,8 @@
|
|||||||
//! endpoint in the [Matrix](https://matrix.org/) client API specification. These types can be
|
//! endpoint in the [Matrix](https://matrix.org/) client API specification. These types can be
|
||||||
//! shared by client and server code.
|
//! shared by client and server code.
|
||||||
|
|
||||||
#![deny(missing_debug_implementations)]
|
#![deny(missing_debug_implementations, missing_docs)]
|
||||||
#![feature(associated_consts, proc_macro, try_from)]
|
#![feature(associated_consts, proc_macro, try_from)]
|
||||||
#![warn(missing_docs)]
|
|
||||||
|
|
||||||
extern crate futures;
|
extern crate futures;
|
||||||
extern crate hyper;
|
extern crate hyper;
|
||||||
|
@ -16,25 +16,39 @@ pub mod create_room {
|
|||||||
}
|
}
|
||||||
|
|
||||||
request {
|
request {
|
||||||
|
/// Extra keys to be added to the content of the `m.room.create`.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub creation_content: Option<CreationContent>,
|
pub creation_content: Option<CreationContent>,
|
||||||
|
/// A list of user IDs to invite to the room.
|
||||||
|
///
|
||||||
|
/// This will tell the server to invite everyone in the list to the newly created room.
|
||||||
#[serde(skip_serializing_if = "Vec::is_empty")]
|
#[serde(skip_serializing_if = "Vec::is_empty")]
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub invite: Vec<UserId>,
|
pub invite: Vec<UserId>,
|
||||||
|
/// If this is included, an `m.room.name` event will be sent into the room to indicate
|
||||||
|
/// the name of the room.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub name: Option<String>,
|
pub name: Option<String>,
|
||||||
|
/// Convenience parameter for setting various default state events based on a preset.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub preset: Option<RoomPreset>,
|
pub preset: Option<RoomPreset>,
|
||||||
|
/// The desired room alias local part.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub room_alias_name: Option<String>,
|
pub room_alias_name: Option<String>,
|
||||||
|
/// If this is included, an `m.room.topic` event will be sent into the room to indicate
|
||||||
|
/// the topic for the room.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub topic: Option<String>,
|
pub topic: Option<String>,
|
||||||
|
/// A public visibility indicates that the room will be shown in the published room
|
||||||
|
/// list. A private visibility will hide the room from the published room list. Rooms
|
||||||
|
/// default to private visibility if this key is not included.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub visibility: Option<String>, // TODO: should be an enum ["public", "private"]
|
pub visibility: Option<Visibility>,
|
||||||
// TODO: missing `invite_3pid`, `initial_state`
|
// TODO: missing `invite_3pid`, `initial_state`
|
||||||
}
|
}
|
||||||
|
|
||||||
response {
|
response {
|
||||||
|
/// The created room's ID.
|
||||||
pub room_id: RoomId,
|
pub room_id: RoomId,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -42,6 +56,9 @@ pub mod create_room {
|
|||||||
/// Extra options to be added to the `m.room.create` event.
|
/// Extra options to be added to the `m.room.create` event.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct CreationContent {
|
pub struct CreationContent {
|
||||||
|
/// Whether users on other servers can join this room.
|
||||||
|
///
|
||||||
|
/// Defaults to `true` if key does not exist.
|
||||||
#[serde(rename="m.federate")]
|
#[serde(rename="m.federate")]
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub federate: Option<bool>,
|
pub federate: Option<bool>,
|
||||||
@ -60,4 +77,15 @@ pub mod create_room {
|
|||||||
#[serde(rename="trusted_private_chat")]
|
#[serde(rename="trusted_private_chat")]
|
||||||
TrustedPrivateChat,
|
TrustedPrivateChat,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Whether or not a newly created room will be listed in the room directory.
|
||||||
|
#[derive(Clone, Copy, Debug, Deserialize, Serialize)]
|
||||||
|
pub enum Visibility {
|
||||||
|
/// Indicates that the room will be shown in the published room list.
|
||||||
|
#[serde(rename = "public")]
|
||||||
|
Public,
|
||||||
|
/// Indicates that the room from the published room list.
|
||||||
|
#[serde(rename = "private")]
|
||||||
|
Private,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,40 +13,49 @@ pub mod login {
|
|||||||
rate_limited: true,
|
rate_limited: true,
|
||||||
requires_authentication: false,
|
requires_authentication: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
request {
|
request {
|
||||||
/// Password of the user
|
/// The user's password.
|
||||||
pub password: String,
|
pub password: String,
|
||||||
/// Medium of 3rd party login to use
|
/// When logging in using a third party identifier, the medium of the identifier.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub medium: Option<LoginMedium>,
|
pub medium: Option<Medium>,
|
||||||
/// Type of login to do
|
/// The authentication mechanism.
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
pub kind: LoginKind,
|
pub login_type: LoginType,
|
||||||
/// Localpart or full matrix user id of the user
|
/// The fully qualified user ID or just local part of the user ID.
|
||||||
pub user: String,
|
pub user: String,
|
||||||
/// 3rd party identifier for the user
|
/// Third party identifier for the user.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub address: Option<String>
|
pub address: Option<String>
|
||||||
}
|
}
|
||||||
|
|
||||||
response {
|
response {
|
||||||
|
/// An access token for the account.
|
||||||
pub access_token: String,
|
pub access_token: String,
|
||||||
|
/// The hostname of the homeserver on which the account has been registered.
|
||||||
pub home_server: String,
|
pub home_server: String,
|
||||||
|
/// A refresh token may be exchanged for a new access token using the /tokenrefresh API
|
||||||
|
/// endpoint.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub refresh_token: Option<String>,
|
pub refresh_token: Option<String>,
|
||||||
|
/// The fully-qualified Matrix ID that has been registered.
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Possible login mediums for 3rd party ID
|
/// The medium of a third party identifier.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub enum LoginMedium {
|
pub enum Medium {
|
||||||
|
/// An email address.
|
||||||
#[serde(rename = "email")]
|
#[serde(rename = "email")]
|
||||||
Email,
|
Email,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Possible kinds of login
|
/// The authentication mechanism.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub enum LoginKind {
|
pub enum LoginType {
|
||||||
|
/// A password is supplied to authenticate.
|
||||||
#[serde(rename = "m.login.password")]
|
#[serde(rename = "m.login.password")]
|
||||||
Password,
|
Password,
|
||||||
}
|
}
|
||||||
@ -65,7 +74,9 @@ pub mod logout {
|
|||||||
rate_limited: false,
|
rate_limited: false,
|
||||||
requires_authentication: true,
|
requires_authentication: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
request {}
|
request {}
|
||||||
|
|
||||||
response {}
|
response {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
137
src/r0/sync.rs
137
src/r0/sync.rs
@ -3,8 +3,8 @@
|
|||||||
/// [GET /_matrix/client/r0/rooms/{roomId}/state](https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-rooms-roomid-state)
|
/// [GET /_matrix/client/r0/rooms/{roomId}/state](https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-rooms-roomid-state)
|
||||||
pub mod get_state_events {
|
pub mod get_state_events {
|
||||||
use ruma_api_macros::ruma_api;
|
use ruma_api_macros::ruma_api;
|
||||||
use ruma_identifiers::RoomId;
|
|
||||||
use ruma_events::collections::only;
|
use ruma_events::collections::only;
|
||||||
|
use ruma_identifiers::RoomId;
|
||||||
|
|
||||||
ruma_api! {
|
ruma_api! {
|
||||||
metadata {
|
metadata {
|
||||||
@ -15,11 +15,18 @@ pub mod get_state_events {
|
|||||||
rate_limited: false,
|
rate_limited: false,
|
||||||
requires_authentication: true,
|
requires_authentication: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
request {
|
request {
|
||||||
|
/// The room to look up the state for.
|
||||||
#[ruma_api(path)]
|
#[ruma_api(path)]
|
||||||
pub room_id: RoomId,
|
pub room_id: RoomId,
|
||||||
}
|
}
|
||||||
|
|
||||||
response {
|
response {
|
||||||
|
/// If the user is a member of the room this will be the current state of the room as a
|
||||||
|
/// list of events. If the user has left the room then this will be the state of the
|
||||||
|
/// room when they left as a list of events.
|
||||||
|
#[ruma_api(body)]
|
||||||
pub room_state: Vec<only::StateEvent>,
|
pub room_state: Vec<only::StateEvent>,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -28,8 +35,8 @@ pub mod get_state_events {
|
|||||||
/// [GET /_matrix/client/r0/rooms/{roomId}/state/{eventType}](https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-rooms-roomid-state-eventtype)
|
/// [GET /_matrix/client/r0/rooms/{roomId}/state/{eventType}](https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-rooms-roomid-state-eventtype)
|
||||||
pub mod get_state_events_for_empty_key {
|
pub mod get_state_events_for_empty_key {
|
||||||
use ruma_api_macros::ruma_api;
|
use ruma_api_macros::ruma_api;
|
||||||
use ruma_identifiers::RoomId;
|
|
||||||
use ruma_events::EventType;
|
use ruma_events::EventType;
|
||||||
|
use ruma_identifiers::RoomId;
|
||||||
|
|
||||||
ruma_api! {
|
ruma_api! {
|
||||||
metadata {
|
metadata {
|
||||||
@ -40,15 +47,19 @@ pub mod get_state_events_for_empty_key {
|
|||||||
rate_limited: false,
|
rate_limited: false,
|
||||||
requires_authentication: true,
|
requires_authentication: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
request {
|
request {
|
||||||
/// The room to query for events
|
/// The room to look up the state for.
|
||||||
#[ruma_api(path)]
|
#[ruma_api(path)]
|
||||||
pub room_id: RoomId,
|
pub room_id: RoomId,
|
||||||
/// The type of state to look up
|
/// The type of state to look up.
|
||||||
#[ruma_api(path)]
|
#[ruma_api(path)]
|
||||||
pub event_type: EventType,
|
pub event_type: EventType,
|
||||||
}
|
}
|
||||||
|
|
||||||
response {
|
response {
|
||||||
|
/// The content of the state event.
|
||||||
|
#[ruma_api(body)]
|
||||||
pub content: ::serde_json::Value,
|
pub content: ::serde_json::Value,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -68,8 +79,9 @@ pub mod get_state_events_for_key {
|
|||||||
rate_limited: false,
|
rate_limited: false,
|
||||||
requires_authentication: true,
|
requires_authentication: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
request {
|
request {
|
||||||
/// The room to look up the state in.
|
/// The room to look up the state for.
|
||||||
#[ruma_api(path)]
|
#[ruma_api(path)]
|
||||||
pub room_id: RoomId,
|
pub room_id: RoomId,
|
||||||
/// The type of state to look up.
|
/// The type of state to look up.
|
||||||
@ -79,7 +91,10 @@ pub mod get_state_events_for_key {
|
|||||||
#[ruma_api(path)]
|
#[ruma_api(path)]
|
||||||
pub state_key: String,
|
pub state_key: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
response {
|
response {
|
||||||
|
/// The content of the state event.
|
||||||
|
#[ruma_api(body)]
|
||||||
pub content: ::serde_json::Value,
|
pub content: ::serde_json::Value,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -88,8 +103,8 @@ pub mod get_state_events_for_key {
|
|||||||
/// [GET /_matrix/client/r0/rooms/{roomId}/members](https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-rooms-roomid-members)
|
/// [GET /_matrix/client/r0/rooms/{roomId}/members](https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-rooms-roomid-members)
|
||||||
pub mod get_member_events {
|
pub mod get_member_events {
|
||||||
use ruma_api_macros::ruma_api;
|
use ruma_api_macros::ruma_api;
|
||||||
use ruma_identifiers::RoomId;
|
|
||||||
use ruma_events::room::member::MemberEvent;
|
use ruma_events::room::member::MemberEvent;
|
||||||
|
use ruma_identifiers::RoomId;
|
||||||
|
|
||||||
ruma_api! {
|
ruma_api! {
|
||||||
metadata {
|
metadata {
|
||||||
@ -103,12 +118,15 @@ pub mod get_member_events {
|
|||||||
// will return a 403 error is user is not a member of the
|
// will return a 403 error is user is not a member of the
|
||||||
// room anyway...
|
// room anyway...
|
||||||
}
|
}
|
||||||
|
|
||||||
request {
|
request {
|
||||||
/// The room to look up the state in.
|
/// The room to get the member events for.
|
||||||
#[ruma_api(path)]
|
#[ruma_api(path)]
|
||||||
pub room_id: RoomId,
|
pub room_id: RoomId,
|
||||||
}
|
}
|
||||||
|
|
||||||
response {
|
response {
|
||||||
|
/// A list of member events.
|
||||||
pub chunk: Vec<MemberEvent>
|
pub chunk: Vec<MemberEvent>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -117,8 +135,8 @@ pub mod get_member_events {
|
|||||||
/// [GET /_matrix/client/r0/rooms/{roomId}/messages](https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-rooms-roomid-messages)
|
/// [GET /_matrix/client/r0/rooms/{roomId}/messages](https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-rooms-roomid-messages)
|
||||||
pub mod get_message_events {
|
pub mod get_message_events {
|
||||||
use ruma_api_macros::ruma_api;
|
use ruma_api_macros::ruma_api;
|
||||||
use ruma_identifiers::RoomId;
|
|
||||||
use ruma_events::collections::only;
|
use ruma_events::collections::only;
|
||||||
|
use ruma_identifiers::RoomId;
|
||||||
|
|
||||||
ruma_api! {
|
ruma_api! {
|
||||||
metadata {
|
metadata {
|
||||||
@ -129,38 +147,50 @@ pub mod get_message_events {
|
|||||||
rate_limited: false,
|
rate_limited: false,
|
||||||
requires_authentication: true,
|
requires_authentication: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
request {
|
request {
|
||||||
// NOTE: The non-macro version of this call included two path params, where the spec only
|
/// The room to get events from.
|
||||||
// has one, room_id. I've followed the spec here. -- rschulman 6/30/2017
|
|
||||||
/// The room to look up the state in.
|
|
||||||
#[ruma_api(path)]
|
#[ruma_api(path)]
|
||||||
pub room_id: RoomId,
|
pub room_id: RoomId,
|
||||||
/// Required. The token to start returning events from. This token can be obtained from a
|
/// The token to start returning events from.
|
||||||
|
///
|
||||||
|
/// This token can be obtained from a
|
||||||
/// prev_batch token returned for each room by the sync API, or from a start or end token
|
/// prev_batch token returned for each room by the sync API, or from a start or end token
|
||||||
/// returned by a previous request to this endpoint.
|
/// returned by a previous request to this endpoint.
|
||||||
pub from: String,
|
pub from: String,
|
||||||
/// The token to stop returning events at. This token can be obtained from a prev_batch
|
/// The token to stop returning events at.
|
||||||
|
///
|
||||||
|
/// This token can be obtained from a prev_batch
|
||||||
/// token returned for each room by the sync endpoint, or from a start or end token returned
|
/// token returned for each room by the sync endpoint, or from a start or end token returned
|
||||||
/// by a previous request to this endpoint.
|
/// by a previous request to this endpoint.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub to: Option<String>,
|
pub to: Option<String>,
|
||||||
/// Required. The direction to return events from. One of: ["b", "f"]
|
/// The direction to return events from.
|
||||||
pub dir: Direction,
|
pub dir: Direction,
|
||||||
/// The maximum number of events to return. Default: 10.
|
/// The maximum number of events to return.
|
||||||
|
///
|
||||||
|
/// Default: 10.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub limit: Option<u64>,
|
pub limit: Option<u64>,
|
||||||
}
|
}
|
||||||
|
|
||||||
response {
|
response {
|
||||||
|
/// The token the pagination starts from.
|
||||||
pub start: String,
|
pub start: String,
|
||||||
|
/// A list of room events.
|
||||||
pub chunk: Vec<only::RoomEvent>,
|
pub chunk: Vec<only::RoomEvent>,
|
||||||
|
/// The token the pagination ends at.
|
||||||
pub end: String,
|
pub end: String,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The direction to return events from.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub enum Direction {
|
pub enum Direction {
|
||||||
|
/// Return events backwards in time from the requested `from` token.
|
||||||
#[serde(rename="b")]
|
#[serde(rename="b")]
|
||||||
Backward,
|
Backward,
|
||||||
|
/// Return events forwards in time from the requested `from` token.
|
||||||
#[serde(rename="f")]
|
#[serde(rename="f")]
|
||||||
Forward,
|
Forward,
|
||||||
}
|
}
|
||||||
@ -168,12 +198,12 @@ pub mod get_message_events {
|
|||||||
|
|
||||||
/// [GET /_matrix/client/r0/sync](https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-sync)
|
/// [GET /_matrix/client/r0/sync](https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-sync)
|
||||||
pub mod sync_events {
|
pub mod sync_events {
|
||||||
use ruma_api_macros::ruma_api;
|
|
||||||
use ruma_events::collections::only;
|
|
||||||
use ruma_identifiers::RoomId;
|
|
||||||
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
use ruma_api_macros::ruma_api;
|
||||||
|
use ruma_events::collections::{all, only};
|
||||||
|
use ruma_identifiers::RoomId;
|
||||||
|
|
||||||
use r0::filter::FilterDefinition;
|
use r0::filter::FilterDefinition;
|
||||||
|
|
||||||
ruma_api! {
|
ruma_api! {
|
||||||
@ -185,21 +215,31 @@ pub mod sync_events {
|
|||||||
rate_limited: false,
|
rate_limited: false,
|
||||||
requires_authentication: true,
|
requires_authentication: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
request {
|
request {
|
||||||
|
/// A filter represented either as its full JSON definition or the ID of a saved filter.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub filter: Option<Filter>,
|
pub filter: Option<Filter>,
|
||||||
|
/// A point in time to continue a sync from.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub since: Option<String>,
|
pub since: Option<String>,
|
||||||
|
/// Controls whether to include the full state for all rooms the user is a member of.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub full_state: Option<bool>,
|
pub full_state: Option<bool>,
|
||||||
|
/// Controls whether the client is automatically marked as online by polling this API.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub set_presence: Option<SetPresence>,
|
pub set_presence: Option<SetPresence>,
|
||||||
|
/// The maximum time to poll in milliseconds before returning this request.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub timeout: Option<u64>,
|
pub timeout: Option<u64>,
|
||||||
}
|
}
|
||||||
|
|
||||||
response {
|
response {
|
||||||
|
/// The batch token to supply in the `since` param of the next `/sync` request.
|
||||||
pub next_batch: String,
|
pub next_batch: String,
|
||||||
|
/// Updates to rooms.
|
||||||
pub rooms: Rooms,
|
pub rooms: Rooms,
|
||||||
|
/// Updates to the presence status of other users.
|
||||||
pub presence: Presence,
|
pub presence: Presence,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,6 +248,7 @@ pub mod sync_events {
|
|||||||
/// Whether to set presence or not during sync.
|
/// Whether to set presence or not during sync.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub enum SetPresence {
|
pub enum SetPresence {
|
||||||
|
/// Do not set the presence of the user calling this API.
|
||||||
#[serde(rename="offline")]
|
#[serde(rename="offline")]
|
||||||
Offline,
|
Offline,
|
||||||
}
|
}
|
||||||
@ -221,79 +262,105 @@ pub mod sync_events {
|
|||||||
FilterId(String),
|
FilterId(String),
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Updates to rooms
|
/// Updates to rooms.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct Rooms {
|
pub struct Rooms {
|
||||||
|
/// The rooms that the user has left or been banned from.
|
||||||
pub leave: HashMap<RoomId, LeftRoom>,
|
pub leave: HashMap<RoomId, LeftRoom>,
|
||||||
|
/// The rooms that the user has joined.
|
||||||
pub join: HashMap<RoomId, JoinedRoom>,
|
pub join: HashMap<RoomId, JoinedRoom>,
|
||||||
|
/// The rooms that the user has been invited to.
|
||||||
pub invite: HashMap<RoomId, InvitedRoom>,
|
pub invite: HashMap<RoomId, InvitedRoom>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Historical updates to left rooms
|
/// Historical updates to left rooms.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct LeftRoom {
|
pub struct LeftRoom {
|
||||||
|
/// The timeline of messages and state changes in the room up to the point when the user
|
||||||
|
/// left.
|
||||||
pub timeline: Timeline,
|
pub timeline: Timeline,
|
||||||
|
/// The state updates for the room up to the start of the timeline.
|
||||||
pub state: State,
|
pub state: State,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Updates to joined rooms
|
/// Updates to joined rooms.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct JoinedRoom {
|
pub struct JoinedRoom {
|
||||||
|
/// Counts of unread notifications for this room.
|
||||||
pub unread_notifications: UnreadNotificationsCount,
|
pub unread_notifications: UnreadNotificationsCount,
|
||||||
|
/// The timeline of messages and state changes in the room.
|
||||||
pub timeline: Timeline,
|
pub timeline: Timeline,
|
||||||
|
/// Updates to the state, between the time indicated by the `since` parameter, and the start
|
||||||
|
/// of the `timeline` (or all state up to the start of the `timeline`, if `since` is not
|
||||||
|
/// given, or `full_state` is true).
|
||||||
pub state: State,
|
pub state: State,
|
||||||
|
/// The private data that this user has attached to this room.
|
||||||
pub account_data: AccountData,
|
pub account_data: AccountData,
|
||||||
|
/// The ephemeral events in the room that aren't recorded in the timeline or state of the
|
||||||
|
/// room. e.g. typing.
|
||||||
pub ephemeral: Ephemeral,
|
pub ephemeral: Ephemeral,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// unread notifications count
|
/// unread notifications count
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct UnreadNotificationsCount {
|
pub struct UnreadNotificationsCount {
|
||||||
|
/// The number of unread notifications for this room with the highlight flag set.
|
||||||
pub highlight_count: u64,
|
pub highlight_count: u64,
|
||||||
|
/// The total number of unread notifications for this room.
|
||||||
pub notification_count: u64,
|
pub notification_count: u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// timeline
|
/// Events in the room.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct Timeline {
|
pub struct Timeline {
|
||||||
|
/// True if the number of events returned was limited by the `limit` on the filter.
|
||||||
pub limited: bool,
|
pub limited: bool,
|
||||||
|
/// A token that can be supplied to to the `from` parameter of the
|
||||||
|
/// `/rooms/{roomId}/messages` endpoint.
|
||||||
pub prev_batch: String,
|
pub prev_batch: String,
|
||||||
pub events: only::RoomEvent,
|
/// A list of events.
|
||||||
|
pub events: Vec<all::StateEvent>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// state
|
/// State events in the room.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct State {
|
pub struct State {
|
||||||
pub events: only::StateEvent,
|
/// A list of state events.
|
||||||
|
pub events: Vec<only::StateEvent>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// account data
|
/// The private data that this user has attached to this room.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct AccountData {
|
pub struct AccountData {
|
||||||
pub events: only::Event,
|
/// A list of events.
|
||||||
|
pub events: Vec<only::Event>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ephemeral
|
/// Ephemeral events not recorded in the timeline or state of the room.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct Ephemeral {
|
pub struct Ephemeral {
|
||||||
pub events: only::Event,
|
/// A list of events.
|
||||||
|
pub events: Vec<only::Event>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// invited room updates
|
/// Updates to the rooms that the user has been invited to.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct InvitedRoom {
|
pub struct InvitedRoom {
|
||||||
|
/// The state of a room that the user has been invited to.
|
||||||
pub invite_state: InviteState,
|
pub invite_state: InviteState,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// invite state
|
/// The state of a room that the user has been invited to.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct InviteState {
|
pub struct InviteState {
|
||||||
pub events: only::StateEvent,
|
/// A list of state events.
|
||||||
|
pub events: Vec<only::StateEvent>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// presence
|
/// Updates to the presence status of other users.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
pub struct Presence {
|
pub struct Presence {
|
||||||
pub events: only::Event,
|
/// A list of events.
|
||||||
|
pub events: Vec<only::Event>,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user