#[doc(hidden)]
#[macro_export]
#[cfg(feature = "par")]
macro_rules! __oauth_as_if_par {
($($item:tt)*) => { $($item)* };
}
#[doc(hidden)]
#[macro_export]
#[cfg(not(feature = "par"))]
macro_rules! __oauth_as_if_par {
($($item:tt)*) => {};
}
#[doc(hidden)]
#[macro_export]
#[cfg(feature = "consent")]
macro_rules! __oauth_as_if_consent {
($($item:tt)*) => { $($item)* };
}
#[doc(hidden)]
#[macro_export]
#[cfg(not(feature = "consent"))]
macro_rules! __oauth_as_if_consent {
($($item:tt)*) => {};
}
#[doc(hidden)]
#[macro_export]
#[cfg(any(feature = "client-assertion", feature = "dpop"))]
macro_rules! __oauth_as_if_replay {
($($item:tt)*) => { $($item)* };
}
#[doc(hidden)]
#[macro_export]
#[cfg(not(any(feature = "client-assertion", feature = "dpop")))]
macro_rules! __oauth_as_if_replay {
($($item:tt)*) => {};
}
#[macro_export]
macro_rules! delegate_storage {
(to $field:tt; $($method:ident),* $(,)?) => {
$($crate::delegate_storage!(@one $field, $method);)*
};
(@one $f:tt, get_client) => {
async fn get_client(
&self,
client_id: &$crate::ClientId,
) -> ::core::result::Result<
::core::option::Option<::std::sync::Arc<$crate::Client>>,
$crate::store::StorageError,
> {
$crate::store::Storage::get_client(&self.$f, client_id).await
}
};
(@one $f:tt, put_client) => {
async fn put_client(
&self,
client: $crate::Client,
) -> ::core::result::Result<(), $crate::store::StorageError> {
$crate::store::Storage::put_client(&self.$f, client).await
}
};
(@one $f:tt, compare_and_swap_client) => {
async fn compare_and_swap_client(
&self,
expected: &$crate::Client,
updated: $crate::Client,
) -> ::core::result::Result<bool, $crate::store::StorageError> {
$crate::store::Storage::compare_and_swap_client(&self.$f, expected, updated).await
}
};
(@one $f:tt, delete_client) => {
async fn delete_client(
&self,
client_id: &$crate::ClientId,
window: $crate::store::RevocationWindow,
) -> ::core::result::Result<bool, $crate::store::StorageError> {
$crate::store::Storage::delete_client(&self.$f, client_id, window).await
}
};
(@one $f:tt, put_device_grant) => {
async fn put_device_grant(
&self,
grant: $crate::DeviceGrant,
) -> ::core::result::Result<(), $crate::store::StorageError> {
$crate::store::Storage::put_device_grant(&self.$f, grant).await
}
};
(@one $f:tt, get_device_grant) => {
async fn get_device_grant(
&self,
device_code: &str,
) -> ::core::result::Result<
::core::option::Option<$crate::DeviceGrant>,
$crate::store::StorageError,
> {
$crate::store::Storage::get_device_grant(&self.$f, device_code).await
}
};
(@one $f:tt, find_device_grant_by_user_code) => {
async fn find_device_grant_by_user_code(
&self,
normalized_user_code: &str,
) -> ::core::result::Result<
::core::option::Option<$crate::DeviceGrant>,
$crate::store::StorageError,
> {
$crate::store::Storage::find_device_grant_by_user_code(&self.$f, normalized_user_code).await
}
};
(@one $f:tt, take_device_grant) => {
async fn take_device_grant(
&self,
device_code: &str,
) -> ::core::result::Result<
::core::option::Option<$crate::DeviceGrant>,
$crate::store::StorageError,
> {
$crate::store::Storage::take_device_grant(&self.$f, device_code).await
}
};
(@one $f:tt, compare_and_swap_device_grant) => {
async fn compare_and_swap_device_grant(
&self,
expected: &$crate::DeviceGrantState,
updated: $crate::DeviceGrant,
) -> ::core::result::Result<bool, $crate::store::StorageError> {
$crate::store::Storage::compare_and_swap_device_grant(&self.$f, expected, updated).await
}
};
(@one $f:tt, put_authorization_code) => {
async fn put_authorization_code(
&self,
record: $crate::AuthorizationCodeRecord,
) -> ::core::result::Result<(), $crate::store::StorageError> {
$crate::store::Storage::put_authorization_code(&self.$f, record).await
}
};
(@one $f:tt, compare_and_swap_authorization_code) => {
async fn compare_and_swap_authorization_code(
&self,
expected: &$crate::AuthorizationCodeState,
updated: $crate::AuthorizationCodeRecord,
) -> ::core::result::Result<bool, $crate::store::StorageError> {
$crate::store::Storage::compare_and_swap_authorization_code(&self.$f, expected, updated)
.await
}
};
(@one $f:tt, take_authorization_code) => {
async fn take_authorization_code(
&self,
code: &str,
) -> ::core::result::Result<
::core::option::Option<$crate::AuthorizationCodeRecord>,
$crate::store::StorageError,
> {
$crate::store::Storage::take_authorization_code(&self.$f, code).await
}
};
(@one $f:tt, put_pushed_authorization_request) => {
$crate::__oauth_as_if_par! {
async fn put_pushed_authorization_request(
&self,
record: $crate::par::PushedAuthorizationRequest,
) -> ::core::result::Result<$crate::store::WriteOutcome, $crate::store::StorageError> {
$crate::store::Storage::put_pushed_authorization_request(&self.$f, record).await
}
}
};
(@one $f:tt, take_pushed_authorization_request) => {
$crate::__oauth_as_if_par! {
async fn take_pushed_authorization_request(
&self,
request_uri: &str,
) -> ::core::result::Result<
::core::option::Option<$crate::par::PushedAuthorizationRequest>,
$crate::store::StorageError,
> {
$crate::store::Storage::take_pushed_authorization_request(&self.$f, request_uri)
.await
}
}
};
(@one $f:tt, put_token) => {
async fn put_token(
&self,
token: $crate::IssuedToken,
) -> ::core::result::Result<$crate::store::WriteOutcome, $crate::store::StorageError> {
$crate::store::Storage::put_token(&self.$f, token).await
}
};
(@one $f:tt, get_token) => {
async fn get_token(
&self,
access_token: &str,
) -> ::core::result::Result<
::core::option::Option<::std::sync::Arc<$crate::IssuedToken>>,
$crate::store::StorageError,
> {
$crate::store::Storage::get_token(&self.$f, access_token).await
}
};
(@one $f:tt, delete_token) => {
async fn delete_token(
&self,
access_token: &str,
) -> ::core::result::Result<(), $crate::store::StorageError> {
$crate::store::Storage::delete_token(&self.$f, access_token).await
}
};
(@one $f:tt, put_refresh_token) => {
async fn put_refresh_token(
&self,
record: $crate::RefreshTokenRecord,
) -> ::core::result::Result<$crate::store::WriteOutcome, $crate::store::StorageError> {
$crate::store::Storage::put_refresh_token(&self.$f, record).await
}
};
(@one $f:tt, get_refresh_token) => {
async fn get_refresh_token(
&self,
refresh_token: &str,
) -> ::core::result::Result<
::core::option::Option<::std::sync::Arc<$crate::RefreshTokenRecord>>,
$crate::store::StorageError,
> {
$crate::store::Storage::get_refresh_token(&self.$f, refresh_token).await
}
};
(@one $f:tt, take_refresh_token) => {
async fn take_refresh_token(
&self,
refresh_token: &str,
) -> ::core::result::Result<
::core::option::Option<$crate::RefreshTokenRecord>,
$crate::store::StorageError,
> {
$crate::store::Storage::take_refresh_token(&self.$f, refresh_token).await
}
};
(@one $f:tt, revoke_token_family) => {
async fn revoke_token_family(
&self,
family_id: &str,
window: $crate::store::RevocationWindow,
) -> ::core::result::Result<u64, $crate::store::StorageError> {
$crate::store::Storage::revoke_token_family(&self.$f, family_id, window).await
}
};
(@one $f:tt, put_consent) => {
$crate::__oauth_as_if_consent! {
async fn put_consent(
&self,
record: $crate::ConsentRecord,
) -> ::core::result::Result<(), $crate::store::StorageError> {
$crate::store::Storage::put_consent(&self.$f, record).await
}
}
};
(@one $f:tt, compare_and_swap_consent) => {
$crate::__oauth_as_if_consent! {
async fn compare_and_swap_consent(
&self,
expected: ::core::option::Option<&$crate::ConsentRecord>,
updated: $crate::ConsentRecord,
) -> ::core::result::Result<bool, $crate::store::StorageError> {
$crate::store::Storage::compare_and_swap_consent(&self.$f, expected, updated).await
}
}
};
(@one $f:tt, get_consent) => {
$crate::__oauth_as_if_consent! {
async fn get_consent(
&self,
consent_id: &str,
) -> ::core::result::Result<
::core::option::Option<::std::sync::Arc<$crate::ConsentRecord>>,
$crate::store::StorageError,
> {
$crate::store::Storage::get_consent(&self.$f, consent_id).await
}
}
};
(@one $f:tt, find_consent) => {
$crate::__oauth_as_if_consent! {
async fn find_consent(
&self,
client_id: &$crate::ClientId,
subject: &str,
) -> ::core::result::Result<
::core::option::Option<::std::sync::Arc<$crate::ConsentRecord>>,
$crate::store::StorageError,
> {
$crate::store::Storage::find_consent(&self.$f, client_id, subject).await
}
}
};
(@one $f:tt, consents_for_subject) => {
$crate::__oauth_as_if_consent! {
async fn consents_for_subject(
&self,
subject: &str,
) -> ::core::result::Result<
::std::vec::Vec<::std::sync::Arc<$crate::ConsentRecord>>,
$crate::store::StorageError,
> {
$crate::store::Storage::consents_for_subject(&self.$f, subject).await
}
}
};
(@one $f:tt, revoke_consent) => {
$crate::__oauth_as_if_consent! {
async fn revoke_consent(
&self,
consent_id: &str,
window: $crate::store::RevocationWindow,
) -> ::core::result::Result<u64, $crate::store::StorageError> {
$crate::store::Storage::revoke_consent(&self.$f, consent_id, window).await
}
}
};
(@one $f:tt, claim_replay_id) => {
$crate::__oauth_as_if_replay! {
async fn claim_replay_id(
&self,
id: &str,
expires_at: ::std::time::SystemTime,
) -> ::core::result::Result<bool, $crate::store::StorageError> {
$crate::store::Storage::claim_replay_id(&self.$f, id, expires_at).await
}
}
};
(@one $f:tt, sweep_expired) => {
async fn sweep_expired(
&self,
now: ::std::time::SystemTime,
) -> ::core::result::Result<u64, $crate::store::StorageError> {
$crate::store::Storage::sweep_expired(&self.$f, now).await
}
};
}