Define module layout and fill in types for a few APIs.
This commit is contained in:
parent
0251019b01
commit
409b8202f7
@ -1,5 +1,4 @@
|
|||||||
[package]
|
[package]
|
||||||
|
|
||||||
authors = ["Jimmy Cuadra <jimmy@jimmycuadra.com>"]
|
authors = ["Jimmy Cuadra <jimmy@jimmycuadra.com>"]
|
||||||
description = "Serializable request and response types for the Matrix client API."
|
description = "Serializable request and response types for the Matrix client API."
|
||||||
documentation = "https://docs.rs/ruma-client-api"
|
documentation = "https://docs.rs/ruma-client-api"
|
||||||
@ -12,3 +11,6 @@ repository = "https://github.com/ruma/ruma-client-api"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
ruma-identifiers = "0.4.1"
|
||||||
|
serde = "0.8.10"
|
||||||
|
serde_derive = "0.8.10"
|
||||||
|
39
src/lib.rs
39
src/lib.rs
@ -0,0 +1,39 @@
|
|||||||
|
//! Crate ruma_client_api contains serializable types for the requests and responses for each
|
||||||
|
//! endpoint in the [Matrix](https://matrix.org/) client API specification. These types can be
|
||||||
|
//! shared by client and server code.
|
||||||
|
|
||||||
|
#![feature(rustc_macro)]
|
||||||
|
|
||||||
|
extern crate ruma_identifiers;
|
||||||
|
extern crate serde;
|
||||||
|
#[macro_use] extern crate serde_derive;
|
||||||
|
|
||||||
|
/// Endpoints for the r0.x.x versions of the client API specification.
|
||||||
|
pub mod r0 {
|
||||||
|
pub mod account;
|
||||||
|
pub mod alias;
|
||||||
|
pub mod config;
|
||||||
|
pub mod contact;
|
||||||
|
pub mod context;
|
||||||
|
pub mod directory;
|
||||||
|
pub mod filter;
|
||||||
|
pub mod media;
|
||||||
|
pub mod membership;
|
||||||
|
pub mod presence;
|
||||||
|
pub mod profile;
|
||||||
|
pub mod push;
|
||||||
|
pub mod receipt;
|
||||||
|
pub mod redact;
|
||||||
|
pub mod room;
|
||||||
|
pub mod search;
|
||||||
|
pub mod send;
|
||||||
|
pub mod server;
|
||||||
|
pub mod session;
|
||||||
|
pub mod sync;
|
||||||
|
pub mod tag;
|
||||||
|
pub mod typing;
|
||||||
|
pub mod voip;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// GET /_matrix/client/versions
|
||||||
|
pub mod version;
|
57
src/r0/account.rs
Normal file
57
src/r0/account.rs
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
//! Endpoints for account registration and management.
|
||||||
|
|
||||||
|
/// POST /_matrix/client/r0/register
|
||||||
|
pub mod register {
|
||||||
|
pub const HTTP_METHOD: &'static str = "POST";
|
||||||
|
pub const PATH: &'static str = "/_matrix/client/r0/register";
|
||||||
|
|
||||||
|
/// The kind of account being registered.
|
||||||
|
#[derive(Copy, Clone, Debug, Deserialize, Serialize)]
|
||||||
|
pub enum RegistrationKind {
|
||||||
|
#[serde(rename="guest")]
|
||||||
|
Guest,
|
||||||
|
#[serde(rename="user")]
|
||||||
|
User,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The request type.
|
||||||
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
pub struct Request {
|
||||||
|
pub bind_email: Option<bool>,
|
||||||
|
pub kind: Option<RegistrationKind>,
|
||||||
|
pub password: String,
|
||||||
|
pub username: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The response type.
|
||||||
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
pub struct Response {
|
||||||
|
pub access_token: String,
|
||||||
|
pub home_server: String,
|
||||||
|
pub user_id: String,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// POST /_matrix/client/r0/account/password/email/requestToken
|
||||||
|
pub mod request_password_change_token {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// POST /_matrix/client/r0/account/deactivate
|
||||||
|
pub mod deactivate {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// POST /_matrix/client/r0/account/password
|
||||||
|
pub mod change_password {
|
||||||
|
pub const HTTP_METHOD: &'static str = "POST";
|
||||||
|
pub const PATH: &'static str = "/_matrix/client/r0/account/password";
|
||||||
|
|
||||||
|
/// The request type.
|
||||||
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
pub struct Request {
|
||||||
|
pub new_password: String,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// POST /_matrix/client/r0/register/email/requestToken
|
||||||
|
pub mod request_register_token {
|
||||||
|
}
|
1
src/r0/alias.rs
Normal file
1
src/r0/alias.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for room aliases.
|
1
src/r0/config.rs
Normal file
1
src/r0/config.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for client configuration.
|
1
src/r0/contact.rs
Normal file
1
src/r0/contact.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for account contact information.
|
1
src/r0/context.rs
Normal file
1
src/r0/context.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for event context.
|
1
src/r0/directory.rs
Normal file
1
src/r0/directory.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for the public room directory.
|
1
src/r0/filter.rs
Normal file
1
src/r0/filter.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for event filters.
|
1
src/r0/media.rs
Normal file
1
src/r0/media.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for the media repository.
|
1
src/r0/membership.rs
Normal file
1
src/r0/membership.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for room membership.
|
1
src/r0/presence.rs
Normal file
1
src/r0/presence.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for user presence.
|
1
src/r0/profile.rs
Normal file
1
src/r0/profile.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for user profiles.
|
1
src/r0/push.rs
Normal file
1
src/r0/push.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for push notifications.
|
1
src/r0/receipt.rs
Normal file
1
src/r0/receipt.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for event receipts.
|
1
src/r0/redact.rs
Normal file
1
src/r0/redact.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for event redaction.
|
48
src/r0/room.rs
Normal file
48
src/r0/room.rs
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//! Endpoints for room creation.
|
||||||
|
|
||||||
|
/// POST /_matrix/client/r0/createRoom
|
||||||
|
pub mod create_room {
|
||||||
|
use ruma_identifiers::RoomId;
|
||||||
|
|
||||||
|
pub const HTTP_METHOD: &'static str = "POST";
|
||||||
|
pub const PATH: &'static str = "/_matrix/client/r0/createRoom";
|
||||||
|
|
||||||
|
/// Extra options to be added to the `m.room.create` event.
|
||||||
|
#[derive(Clone, Debug, Deserialize)]
|
||||||
|
pub struct CreationContent {
|
||||||
|
#[serde(rename="m.federate")]
|
||||||
|
pub federate: Option<bool>,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The request type.
|
||||||
|
#[derive(Clone, Debug, Deserialize)]
|
||||||
|
pub struct Request {
|
||||||
|
pub creation_content: Option<CreationContent>,
|
||||||
|
pub invite: Option<Vec<String>>,
|
||||||
|
pub name: Option<String>,
|
||||||
|
pub preset: Option<RoomPreset>,
|
||||||
|
pub room_alias_name: Option<String>,
|
||||||
|
pub topic: Option<String>,
|
||||||
|
pub visibility: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The response type.
|
||||||
|
#[derive(Debug, Serialize)]
|
||||||
|
pub struct Response {
|
||||||
|
room_id: RoomId,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A convenience parameter for setting a few default state events.
|
||||||
|
#[derive(Clone, Copy, Debug, Deserialize)]
|
||||||
|
pub enum RoomPreset {
|
||||||
|
/// `join_rules` is set to `invite` and `history_visibility` is set to `shared`.
|
||||||
|
#[serde(rename="private_chat")]
|
||||||
|
PrivateChat,
|
||||||
|
/// `join_rules` is set to `public` and `history_visibility` is set to `shared`.
|
||||||
|
#[serde(rename="public_chat")]
|
||||||
|
PublicChat,
|
||||||
|
/// Same as `PrivateChat`, but all initial invitees get the same power level as the creator.
|
||||||
|
#[serde(rename="trusted_private_chat")]
|
||||||
|
TrustedPrivateChat,
|
||||||
|
}
|
||||||
|
}
|
1
src/r0/search.rs
Normal file
1
src/r0/search.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for event searches.
|
1
src/r0/send.rs
Normal file
1
src/r0/send.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for sending events.
|
1
src/r0/server.rs
Normal file
1
src/r0/server.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for server administration.
|
21
src/r0/session.rs
Normal file
21
src/r0/session.rs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
//! Endpoints for user session management.
|
||||||
|
|
||||||
|
/// POST /_matrix/client/r0/login
|
||||||
|
pub mod login {
|
||||||
|
pub const HTTP_METHOD: &'static str = "POST";
|
||||||
|
pub const PATH: &'static str = "/_matrix/client/r0/login";
|
||||||
|
|
||||||
|
/// The response type.
|
||||||
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
struct LoginResponse {
|
||||||
|
pub access_token: String,
|
||||||
|
pub home_server: String,
|
||||||
|
pub user_id: String,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// POST /_matrix/client/r0/logout
|
||||||
|
pub mod logout {
|
||||||
|
pub const HTTP_METHOD: &'static str = "POST";
|
||||||
|
pub const PATH: &'static str = "/_matrix/client/r0/logout";
|
||||||
|
}
|
1
src/r0/sync.rs
Normal file
1
src/r0/sync.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for getting and synchronizing events.
|
1
src/r0/tag.rs
Normal file
1
src/r0/tag.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for tagging rooms.
|
1
src/r0/typing.rs
Normal file
1
src/r0/typing.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for typing notifications.
|
1
src/r0/voip.rs
Normal file
1
src/r0/voip.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
//! Endpoints for Voice over IP.
|
9
src/version.rs
Normal file
9
src/version.rs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
pub const HTTP_METHOD: &'static str = "GET";
|
||||||
|
pub const PATH: &'static str = "/versions";
|
||||||
|
|
||||||
|
/// The response type.
|
||||||
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
pub struct Response {
|
||||||
|
/// A list of Matrix client API protocol versions supported by the homeserver.
|
||||||
|
pub versions: Vec<String>,
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user