Port session.rs to ruma_api_macro

This commit is contained in:
Ross Schulman 2017-06-30 21:53:30 -04:00 committed by Jonas Platte
parent f715124190
commit a097aa02f2

View File

@ -2,27 +2,18 @@
/// [POST /_matrix/client/r0/login](https://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-login) /// [POST /_matrix/client/r0/login](https://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-login)
pub mod login { pub mod login {
/// Details about this API endpoint. use ruma_api_macros::ruma_api;
#[derive(Clone, Copy, Debug)]
pub struct Endpoint;
/// Possible login mediums for 3rd party ID ruma_api! {
#[derive(Clone, Debug, Deserialize, Serialize)] metadata {
pub enum LoginMedium { description: "Login to the homeserver.",
#[serde(rename = "email")] method: ::Method::Post,
Email name: "login",
path: "/_matrix/client/r0/login",
rate_limited: true,
requires_authentication: false,
} }
request {
/// Possible kinds of login
#[derive(Clone, Debug, Deserialize, Serialize)]
pub enum LoginKind {
#[serde(rename = "m.login.password")]
Password
}
/// The body parameters for this endpoint
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct BodyParams {
/// Password of the user /// Password of the user
pub password: String, pub password: String,
/// Medium of 3rd party login to use /// Medium of 3rd party login to use
@ -37,10 +28,7 @@ pub mod login {
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<String> pub address: Option<String>
} }
response {
/// This API endpoint's response.
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Response {
pub access_token: String, pub access_token: String,
pub home_server: String, pub home_server: String,
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
@ -48,80 +36,34 @@ pub mod login {
pub user_id: String, pub user_id: String,
} }
impl ::Endpoint for Endpoint { /// Possible login mediums for 3rd party ID
type BodyParams = (); #[derive(Clone, Debug, Deserialize, Serialize)]
type PathParams = (); pub enum LoginMedium {
type QueryParams = (); #[serde(rename = "email")]
type Response = Response; Email
}
fn method() -> ::Method { /// Possible kinds of login
::Method::Post #[derive(Clone, Debug, Deserialize, Serialize)]
} pub enum LoginKind {
#[serde(rename = "m.login.password")]
fn request_path(_params: Self::PathParams) -> String { Password
Self::router_path().to_string()
}
fn router_path() -> &'static str {
"/_matrix/client/r0/login"
}
fn name() -> &'static str {
"login"
}
fn description() -> &'static str {
"Login to the homeserver."
}
fn requires_authentication() -> bool {
false
}
fn rate_limited() -> bool {
true
}
} }
} }
/// [POST /_matrix/client/r0/logout](https://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-logout) /// [POST /_matrix/client/r0/logout](https://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-logout)
pub mod logout { pub mod logout {
/// Details about this API endpoint. use ruma_api_macros::ruma_api;
#[derive(Clone, Copy, Debug)]
pub struct Endpoint;
impl ::Endpoint for Endpoint { ruma_api! {
type BodyParams = (); metadata {
type PathParams = (); description: "Log out of the homeserver.",
type QueryParams = (); method: ::Method::Post,
type Response = (); name: "logout",
path: "/_matrix/client/r0/logout",
fn method() -> ::Method { rate_limited: false,
::Method::Post requires_authentication: true,
}
fn request_path(_params: Self::PathParams) -> String {
Self::router_path().to_string()
}
fn router_path() -> &'static str {
"/_matrix/client/r0/logout"
}
fn name() -> &'static str {
"logout"
}
fn description() -> &'static str {
"Log out of the homeserver."
}
fn requires_authentication() -> bool {
true
}
fn rate_limited() -> bool {
false
}
} }
request {}
response {}
} }