pub struct OAuth2Manager { /* private fields */ }Expand description
AuthManager implementing the OAuth2 client-credentials flow used by
Iceberg REST catalogs.
A configured token is used directly; otherwise credential is exchanged
for a token at the token endpoint and cached. The cached token is shared
across sessions so it survives the config handshake.
Implementations§
Source§impl OAuth2Manager
impl OAuth2Manager
Sourcepub fn new(token_endpoint: impl Into<String>) -> Self
pub fn new(token_endpoint: impl Into<String>) -> Self
Creates a manager exchanging credentials at token_endpoint, with no
token or credential configured. Combine with the with_* methods:
ⓘ
let manager = OAuth2Manager::new("https://auth.example.com/v1/oauth/tokens")
.with_credential(Some("client-id".into()), "client-secret".into());Sourcepub fn with_token(self, token: impl Into<String>) -> Self
pub fn with_token(self, token: impl Into<String>) -> Self
Sets a bearer token used directly (takes precedence over credential).
Sourcepub fn with_credential(
self,
client_id: Option<String>,
client_secret: String,
) -> Self
pub fn with_credential( self, client_id: Option<String>, client_secret: String, ) -> Self
Sets the client credential exchanged for a token at the token endpoint.
Sourcepub fn with_extra_headers(self, headers: HeaderMap) -> Self
pub fn with_extra_headers(self, headers: HeaderMap) -> Self
Sets extra headers sent with token requests.
Sourcepub fn with_extra_oauth_params(self, params: HashMap<String, String>) -> Self
pub fn with_extra_oauth_params(self, params: HashMap<String, String>) -> Self
Adds extra OAuth2 form parameters (e.g. scope, audience), merged
onto the defaults: provide a scope entry to replace the default
catalog scope.
Trait Implementations§
Source§impl AuthManager for OAuth2Manager
impl AuthManager for OAuth2Manager
Source§fn init_session<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
client: &'life1 HttpClient,
props: &'life2 HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn AuthSession>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn init_session<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
client: &'life1 HttpClient,
props: &'life2 HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn AuthSession>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Session used for the initial
/v1/config handshake, given the
user-supplied properties. Read moreSource§fn catalog_session<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
client: &'life1 HttpClient,
props: &'life2 HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<Arc<dyn AuthSession>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn catalog_session<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
client: &'life1 HttpClient,
props: &'life2 HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<Arc<dyn AuthSession>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Session used for all subsequent catalog requests, given the properties
merged from the user configuration and the server’s config response. Read more
Auto Trait Implementations§
impl Freeze for OAuth2Manager
impl !RefUnwindSafe for OAuth2Manager
impl Send for OAuth2Manager
impl Sync for OAuth2Manager
impl Unpin for OAuth2Manager
impl UnsafeUnpin for OAuth2Manager
impl !UnwindSafe for OAuth2Manager
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
Casts
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read moreSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Forward to the method defined on the type
Any.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Forward to the method defined on the type
Any.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more