Extract Method
and Endpoint
to the ruma-api crate.
This commit is contained in:
parent
c48ba8cb51
commit
eb784ab49b
@ -11,6 +11,7 @@ repository = "https://github.com/ruma/ruma-client-api"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
ruma-api = "0.1.0"
|
||||||
ruma-events = "0.1.0"
|
ruma-events = "0.1.0"
|
||||||
ruma-identifiers = "0.5.0"
|
ruma-identifiers = "0.5.0"
|
||||||
ruma-signatures = "0.1.0"
|
ruma-signatures = "0.1.0"
|
||||||
|
41
src/lib.rs
41
src/lib.rs
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#![feature(proc_macro)]
|
#![feature(proc_macro)]
|
||||||
|
|
||||||
|
extern crate ruma_api;
|
||||||
extern crate ruma_events;
|
extern crate ruma_events;
|
||||||
extern crate ruma_identifiers;
|
extern crate ruma_identifiers;
|
||||||
extern crate ruma_signatures;
|
extern crate ruma_signatures;
|
||||||
@ -11,7 +12,7 @@ extern crate serde;
|
|||||||
#[macro_use] extern crate serde_derive;
|
#[macro_use] extern crate serde_derive;
|
||||||
extern crate serde_json;
|
extern crate serde_json;
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
pub use ruma_api::{Endpoint, Method};
|
||||||
|
|
||||||
/// Endpoints for the r0.x.x versions of the client API specification.
|
/// Endpoints for the r0.x.x versions of the client API specification.
|
||||||
pub mod r0 {
|
pub mod r0 {
|
||||||
@ -42,41 +43,3 @@ pub mod r0 {
|
|||||||
|
|
||||||
/// GET /_matrix/client/versions
|
/// GET /_matrix/client/versions
|
||||||
pub mod supported_versions;
|
pub mod supported_versions;
|
||||||
|
|
||||||
/// HTTP request methods used in Matrix APIs.
|
|
||||||
#[derive(Clone, Copy, Debug)]
|
|
||||||
pub enum Method {
|
|
||||||
/// DELETE
|
|
||||||
Delete,
|
|
||||||
/// GET
|
|
||||||
Get,
|
|
||||||
/// POST
|
|
||||||
Post,
|
|
||||||
/// PUT
|
|
||||||
Put,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// An API endpoint.
|
|
||||||
pub trait Endpoint {
|
|
||||||
/// Request parameters supplied via the body of the HTTP request.
|
|
||||||
type BodyParams: Deserialize + Serialize;
|
|
||||||
|
|
||||||
/// Request parameters supplied via the URL's path.
|
|
||||||
type PathParams;
|
|
||||||
|
|
||||||
/// Parameters supplied via the URL's query string.
|
|
||||||
type QueryParams;
|
|
||||||
|
|
||||||
/// The body of the response.
|
|
||||||
type Response: Deserialize + Serialize;
|
|
||||||
|
|
||||||
/// Returns the HTTP method used by this endpoint.
|
|
||||||
fn method() -> Method;
|
|
||||||
|
|
||||||
/// Generates the path component of the URL for this endpoint using the supplied parameters.
|
|
||||||
fn request_path(params: Self::PathParams) -> String;
|
|
||||||
|
|
||||||
/// Generates a generic path component of the URL for this endpoint, suitable for `Router` from
|
|
||||||
/// the router crate.
|
|
||||||
fn router_path() -> String;
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user