Jimmy Cuadra f9c30c7052
Merge pull request #2 from florianjacob/fix-statuscode-error
Throw StatusCode error if http request was not successful
2018-05-18 01:30:58 -07:00
WIP
2017-05-12 17:35:31 -07:00
2017-07-01 17:22:40 -07:00
2018-05-16 01:48:15 -07:00
2017-07-01 17:22:40 -07:00

ruma-api-macros

Build Status

ruma-api-macros provides a procedural macro for easily generating ruma-api-compatible API endpoints. You define the endpoint's metadata, request fields, and response fields, and the macro generates all the necessary types and implements all the necessary traits.

Usage

Here is an example that shows most of the macro's functionality.

#![feature(proc_macro, try_from)]

extern crate futures;
extern crate http;
extern crate ruma_api;
extern crate ruma_api_macros;
extern crate serde;
#[macro_use] extern crate serde_derive;
extern crate serde_json;
extern crate serde_urlencoded;
extern crate url;

pub mod some_endpoint {
    use ruma_api_macros::ruma_api;

    ruma_api! {
        metadata {
            description: "Does something.",
            method: GET, // An `http::Method` constant. No imports required.
            name: "some_endpoint",
            path: "/_matrix/some/endpoint/:baz", // Variable path components start with a colon.
            rate_limited: false,
            requires_authentication: false,
        }

        request {
            // With no attribute on the field, it will be put into the body of the request.
            pub foo: String,

            // This value will be put into the "Content-Type" HTTP header.
            #[ruma_api(header = "CONTENT_TYPE")]
            pub content_type: String

            // This value will be put into the query string of the request's URL.
            #[ruma_api(query)]
            pub bar: String,

            // This value will be inserted into the request's URL in place of the
            // ":baz" path component.
            #[ruma_api(path)]
            pub baz: String,
        }

        response {
            // This value will be extracted from the "Content-Type" HTTP header.
            #[ruma_api(header = "CONTENT_TYPE")]
            pub content_type: String

            // With no attribute on the field, it will be extracted from the body of the response.
            pub value: String,
        }
    }
}

Documentation

ruma-api-macros has comprehensive documentation available on docs.rs.

License

MIT

Description
No description provided
Readme MIT 14 MiB
Languages
Rust 100%