deboa-macros 0.0.3

macros for deboa
Documentation

Deboa Macros

deboa-macros is a collection of macros for deboa. It used to be the home of bora macro, which has been moved to its own crate but it will continue to exist in this crate for backwards compatibility.

Install

cargo add deboa-macros

Features

  • json
  • xml
  • msgpack

Usage

bora

use deboa::errors::DeboaError;
use deboa_macros::bora;
use vamo::Vamo;

#[derive(Deserialize, Debug)]
pub struct Post {
    pub id: u32,
    pub title: String,
}

#[bora(
    api(
        get(name="get_by_id", path="/posts/<id:i32>", res_body=Post, format="json")
    )
)]
pub struct PostService;

let client = Vamo::new("https://jsonplaceholder.typicode.com");

let mut post_service = PostService::new(client);

let post = post_service.get_by_id(1).await?;

println!("id...: {}", post.id);
println!("title: {}", post.title);

Ok(())

other macros

use deboa::errors::DeboaError;
use deboa_macros::{fetch, get, post, delete};
use deboa_extras::http::serde::json::JsonBody;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug)]
pub struct Post {
    pub id: u32,
    pub title: String,
    pub body: String,
}

let mut client = Deboa::new();

// fetch macro
let response: Vec<Post> = fetch!("https://jsonplaceholder.typicode.com/posts", JsonBody, Vec<Post>, &mut client);

// get macro
let response: Vec<Post> = get!("https://jsonplaceholder.typicode.com/posts", JsonBody, Vec<Post>, &mut client);

// post macro
let response = post!(data, JsonBody, "https://jsonplaceholder.typicode.com/posts", &mut client);

// delete macro
let response = delete!("https://jsonplaceholder.typicode.com/posts", &mut client);

Notes

It is not possible to use the same name for different operations. Please keep struct names unique and in separate modules if possible.

License

MIT

Author

Rogerio Pereira Araujo rogerio.araujo@gmail.com