Macro api_client::api
source · macro_rules! api {
() => { ... };
($(#[$attr:meta])* $vis:vis struct $ident:ident) => { ... };
($(#[$attr:meta])* $vis:vis fn $ident:ident(request: Json<$req:ty>$(, $name:ident: $ty:ty)*) -> StatusCode { $method:tt $url:literal $($headername:tt: $headervalue:expr)* } $($rest:tt)*) => { ... };
($(#[$attr:meta])* $vis:vis fn $ident:ident(request: Json<$req:ty>$(, $name:ident: $ty:ty)*) -> String { $method:tt $url:literal $($headername:tt: $headervalue:expr)* } $($rest:tt)*) => { ... };
($(#[$attr:meta])* $vis:vis fn $ident:ident(request: Json<$req:ty>$(, $name:ident: $ty:ty)*) -> Bytes { $method:tt $url:literal $($headername:tt: $headervalue:expr)* } $($rest:tt)*) => { ... };
($(#[$attr:meta])* $vis:vis fn $ident:ident(request: Json<$req:ty>$(, $name:ident: $ty:ty)*) -> Json<$res:ty> { $method:tt $url:literal $($headername:tt: $headervalue:expr)* } $($rest:tt)*) => { ... };
($(#[$attr:meta])* $vis:vis fn $ident:ident(request: Form<$req:ty>$(, $name:ident: $ty:ty)*) -> StatusCode { $method:tt $url:literal $($headername:tt: $headervalue:expr)* } $($rest:tt)*) => { ... };
($(#[$attr:meta])* $vis:vis fn $ident:ident(request: Form<$req:ty>$(, $name:ident: $ty:ty)*) -> String { $method:tt $url:literal $($headername:tt: $headervalue:expr)* } $($rest:tt)*) => { ... };
($(#[$attr:meta])* $vis:vis fn $ident:ident(request: Form<$req:ty>$(, $name:ident: $ty:ty)*) -> Bytes { $method:tt $url:literal $($headername:tt: $headervalue:expr)* } $($rest:tt)*) => { ... };
($(#[$attr:meta])* $vis:vis fn $ident:ident(request: Form<$req:ty>$(, $name:ident: $ty:ty)*) -> Json<$res:ty> { $method:tt $url:literal $($headername:tt: $headervalue:expr)* } $($rest:tt)*) => { ... };
($(#[$attr:meta])* $vis:vis fn $ident:ident($($name:ident: $ty:ty),*) -> StatusCode { $method:tt $url:literal $($headername:tt: $headervalue:expr)* } $($rest:tt)*) => { ... };
($(#[$attr:meta])* $vis:vis fn $ident:ident($($name:ident: $ty:ty),*) -> String { $method:tt $url:literal $($headername:tt: $headervalue:expr)* } $($rest:tt)*) => { ... };
($(#[$attr:meta])* $vis:vis fn $ident:ident($($name:ident: $ty:ty),*) -> Bytes { $method:tt $url:literal $($headername:tt: $headervalue:expr)* } $($rest:tt)*) => { ... };
($(#[$attr:meta])* $vis:vis fn $ident:ident($($name:ident: $ty:ty),*) -> Json<$res:ty> { $method:ident $url:literal $($headername:tt: $headervalue:expr)* } $($rest:tt)*) => { ... };
}
Expand description
Magic macro for API structs.
Simple Usage (auto generated struct)
use api_client::{api, Api};
use reqwest::{Client, RequestBuilder};
api!(pub struct ExampleApi);
impl ExampleApi {
api! {
fn example() -> String {
GET "https://example.com"
}
}
}
Advanced Usage (manually created struct and Api implementation)
use api_client::{api, Api};
use reqwest::{Client, RequestBuilder};
struct ExampleApi {
client: Client,
username: String,
password: String
}
impl Api for ExampleApi {
fn client(&self) -> &Client {
&self.client
}
fn pre_request(&self, request: RequestBuilder) -> reqwest::Result<RequestBuilder> {
Ok(request.basic_auth(&self.username, Some(&self.password)))
}
}
impl ExampleApi {
api! {
fn example() -> String {
GET "https://example.com"
}
}
}