#[macro_export]
macro_rules! provider_client {
(
$(#[$struct_documentation:meta])*
$struct_name:ident, $provider_name:literal
) => {
$(#[$struct_documentation])*
pub struct $struct_name {
inner: $crate::client::ProviderClient,
}
const PROVIDER_NAME: &str = $provider_name;
impl $struct_name {
#[doc = concat!("Creates a new `", stringify!($struct_name), "` with the given authentication provider.")]
pub fn new(
auth_provider: ::std::sync::Arc<dyn $crate::auth::AuthProvider>,
) -> Self {
Self {
inner: $crate::client::ProviderClient::new(
auth_provider,
PROVIDER_NAME,
),
}
}
#[doc = concat!("Creates a `", stringify!($struct_name), "` with a custom `reqwest::Client` configuration.")]
pub fn with_client_builder(
builder: ::reqwest::ClientBuilder,
auth_provider: ::std::sync::Arc<dyn $crate::auth::AuthProvider>,
) -> $crate::error::EveryMapResult<Self> {
Ok(Self {
inner: $crate::client::ProviderClient::with_client_builder(
builder,
auth_provider,
PROVIDER_NAME,
)?,
})
}
pub fn set_verbose(&mut self, verbose: bool) {
self.inner.set_verbose(verbose);
}
pub fn is_verbose(&self) -> bool {
self.inner.is_verbose()
}
pub fn build_request(
&self,
method: ::reqwest::Method,
url: &str,
) -> ::reqwest::RequestBuilder {
self.inner.build_request(method, url)
}
pub async fn request(
&self,
builder: ::reqwest::RequestBuilder,
) -> $crate::error::EveryMapResult<::reqwest::Response> {
self.inner.request(builder).await
}
pub async fn request_json<T: ::serde::de::DeserializeOwned>(
&self,
builder: ::reqwest::RequestBuilder,
) -> $crate::error::EveryMapResult<T> {
self.inner.request_json(builder).await
}
}
};
}