#![doc = include_str!("../README.md")]
#![deny(missing_docs)]
#[macro_export]
macro_rules! get {
($url:expr, &$client:ident) => {
deboa::HttpClient::execute(&$client, $url)
.await?
.text()
.await?
};
($url:expr, $headers:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::get($url)?
.headers($headers)
.build()?,
)
.await?
.text()
.await?
};
($url:expr, &$client:ident, $res_body_ty:ident, $res_ty:ty) => {
deboa::HttpClient::execute(&$client, $url)
.await?
.body_as::<$res_body_ty, $res_ty>($res_body_ty)
.await?
};
($url:expr, $headers:expr, &$client:ident, $res_body_ty:ident, $res_ty:ty) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::get($url)?
.headers($headers)
.build()?,
)
.await?
.body_as::<$res_body_ty, $res_ty>($res_body_ty)
.await?
};
}
#[macro_export]
macro_rules! post {
($input:ident, $url:literal, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::post($url)?
.body_as(deboa_extras::http::serde::json::JsonBody, $input)?
.build()?,
)
.await?
};
($input:ident, $url:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::post($url)?
.body_as(deboa_extras::http::serde::json::JsonBody, $input)?
.build()?,
)
.await?
};
($input:ident, $url:literal, $headers:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::post($url)?
.headers($headers)
.body_as(deboa_extras::http::serde::json::JsonBody, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:literal, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::post($url)?
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::post($url)?
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:expr, $headers:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::post($url)?
.headers($headers)
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:expr, &$client:ident, $res_body_ty:ident, $res_ty:ty) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::post($url)?
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
.body_as::<$res_body_ty, $res_ty>($res_body_ty)
.await?
};
($input:ident, $req_body_ty:ident, $url:expr, $headers:expr, &$client:ident, $res_body_ty:ident, $res_ty:ty) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::post($url)?
.headers($headers)
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
.body_as::<$res_body_ty, $res_ty>($res_body_ty)
.await?
};
}
#[macro_export]
macro_rules! put {
($input:ident, $url:literal, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::put($url)?
.body_as(deboa_extras::http::serde::json::JsonBody, $input)?
.build()?,
)
.await?
};
($input:ident, $url:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::put($url)?
.body_as(deboa_extras::http::serde::json::JsonBody, $input)?
.build()?,
)
.await?
};
($input:ident, $url:literal, $headers:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::put($url)?
.headers($headers)
.body_as(deboa_extras::http::serde::json::JsonBody, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:literal, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::put($url)?
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::put($url)?
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:expr, $headers:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::put($url)?
.headers($headers)
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:expr, &$client:ident, $res_body_ty:ident, $res_ty:ty) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::put($url)?
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
.body_as::<$res_body_ty, $res_ty>($res_body_ty)
.await?
};
($input:ident, $req_body_ty:ident, $url:expr, $headers:expr, &$client:ident, $res_body_ty:ident, $res_ty:ty) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::put($url)?
.headers($headers)
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
.body_as::<$res_body_ty, $res_ty>($res_body_ty)
.await?
};
}
#[macro_export]
macro_rules! patch {
($input:ident, $url:literal, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::patch($url)?
.body_as(deboa_extras::http::serde::json::JsonBody, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:literal, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::patch($url)?
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::patch($url)?
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:literal, $headers:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::patch($url)?
.headers($headers)
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:expr, $headers:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::patch($url)?
.headers($headers)
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
};
(data => $input:expr, url => $url:expr, headers => $headers:expr, client => &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::patch($url)?
.headers($headers)
.body_as(deboa_extras::http::serde::json::JsonBody, $input)?
.build()?,
)
.await?
};
($input:ident, $req_body_ty:ident, $url:expr, &$client:ident, $res_body_ty:ident, $res_ty:ty) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::patch($url)?
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
.body_as::<$res_body_ty, $res_ty>($res_body_ty)
.await?
};
($input:ident, $req_body_ty:ident, $url:expr, $headers:expr, &$client:ident, $res_body_ty:ident, $res_ty:ty) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::patch($url)?
.headers($headers)
.body_as($req_body_ty, $input)?
.build()?,
)
.await?
.body_as::<$res_body_ty, $res_ty>($res_body_ty)
.await?
};
}
#[macro_export]
macro_rules! delete {
($url:literal, &$client:ident) => {
deboa::HttpClient::execute(&$client, deboa::request::DeboaRequest::delete($url)?.build()?)
.await?
};
($url:expr, &$client:ident) => {
deboa::HttpClient::execute(&$client, deboa::request::DeboaRequest::delete($url)?.build()?)
.await?
};
($url:expr, $headers:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::delete($url)?
.headers($headers)
.build()?,
)
.await?
};
}
#[macro_export]
macro_rules! fetch {
($url:expr, &$client:ident) => {
deboa::HttpClient::execute(&$client, $url).await?
};
($url:expr, $headers:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::get($url)?
.headers($headers)
.build()?,
)
.await?
};
($url:literal, &$client:ident, $res_body_ty:ident, $res_ty:ty) => {
deboa::HttpClient::execute(&$client, $url)
.await?
.body_as::<$res_body_ty, $res_ty>($res_body_ty)
.await?
};
($url:expr, &$client:ident, $res_body_ty:ident, $res_ty:ty) => {
deboa::HttpClient::execute(&$client, $url)
.await?
.body_as::<$res_body_ty, $res_ty>($res_body_ty)
.await?
};
($url:expr, $headers:expr, &$client:ident, $res_body_ty:ident, $res_ty:ty) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::get($url)?
.headers($headers)
.build()?,
)
.await?
.body_as::<$res_body_ty, $res_ty>($res_body_ty)
.await?
};
}
#[macro_export]
macro_rules! submit {
($method:expr, $input:expr, $url:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::at($url, $method)?
.text($input)
.build()?,
)
.await?
};
($method:expr, $input:expr, $url:expr, $headers:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::at($url, $method)?
.headers($headers)
.text($input)
.build()?,
)
.await?
};
}
#[macro_export]
macro_rules! stream {
($url:expr, &$client:ident) => {
deboa::HttpClient::execute(&$client, $url)
.await?
.stream()
};
($url:expr, $headers:expr, &$client:ident) => {
deboa::HttpClient::execute(
&$client,
deboa::request::DeboaRequest::get($url)?
.headers($headers)?
.build()?,
)
.await?
.stream()
};
}