pub struct OAuth2Client { /* private fields */ }Expand description
One upstream’s OAuth2 client-credentials configuration at runtime:
the resolved config plus a per-upstream HTTP client and a fetch
serialization lock. The token cache lives on the dataplane
(OAuth2TokenCache) so a config reload reuses cached tokens.
Implementations§
Source§impl OAuth2Client
impl OAuth2Client
Sourcepub fn build(cfg: OAuth2ClientCredentials) -> Result<Arc<Self>, OAuth2Error>
pub fn build(cfg: OAuth2ClientCredentials) -> Result<Arc<Self>, OAuth2Error>
Build the runtime client from config. The mtls cert/key files
are loaded here (at build time) so a broken bundle disables this
upstream’s OAuth2 at build instead of failing every request.
Sourcepub fn config(&self) -> &OAuth2ClientCredentials
pub fn config(&self) -> &OAuth2ClientCredentials
The resolved config (for validation / introspection).
Sourcepub async fn token(
&self,
cache: &OAuth2TokenCache,
) -> Result<String, OAuth2Error>
pub async fn token( &self, cache: &OAuth2TokenCache, ) -> Result<String, OAuth2Error>
Acquire a valid token: return the cached one if still valid,
else fetch a fresh one under the per-upstream fetch lock (so
concurrent requests coalesce into one fetch). The cache is the
dataplane’s per-upstream token cache; the entry for this upstream
is read and written under the cache’s outer lock, while the
network fetch happens under this client’s inner fetch lock
(released before the cache lock is re-acquired to store the
result, so a slow fetch never blocks other upstreams’ cache
reads).
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for OAuth2Client
impl !RefUnwindSafe for OAuth2Client
impl Send for OAuth2Client
impl Sync for OAuth2Client
impl Unpin for OAuth2Client
impl !UnwindSafe for OAuth2Client
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§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>
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>
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