Skip to main content

TokenSet

Struct TokenSet 

Source
pub struct TokenSet<S: ValidationState = Validated> { /* private fields */ }
Expand description

The set of tokens returned by a successful OAuth 2.0 authorization or refresh flow.

Obtain a TokenSet by calling crate::CliTokenClient::run_authorization_flow or crate::CliTokenClient::refresh. Persist it with crate::TokenStore.

Serializes expires_at as a Unix timestamp (u64) or null when the provider did not return expires_in.

§Example

use loopauth::{TokenSet, Unvalidated};

let json = r#"{
  "access_token": "tok123",
  "refresh_token": "ref456",
  "expires_at": 9999999999,
  "token_type": "Bearer",
  "oidc": null,
  "scopes": ["openid", "email"]
}"#;
let tokens: TokenSet<Unvalidated> = serde_json::from_str(json).unwrap();

assert_eq!(tokens.access_token().as_str(), "tok123");
assert_eq!(tokens.refresh_token().unwrap().as_str(), "ref456");
assert_eq!(tokens.token_type(), "Bearer");
assert_eq!(tokens.scopes().len(), 2);
assert!(!tokens.is_expired());

Implementations§

Source§

impl<S: ValidationState> TokenSet<S>

Source

pub const fn access_token(&self) -> &AccessToken

Returns the access token.

Source

pub const fn refresh_token(&self) -> Option<&RefreshToken>

Returns the refresh token, if present.

Source

pub fn token_type(&self) -> &str

Returns the token type (e.g., “Bearer”).

Source

pub const fn expires_at(&self) -> Option<SystemTime>

Returns the time at which the access token expires, if the provider returned one.

Source

pub fn id_token_raw(&self) -> Option<&str>

Returns the raw ID token JWT string, if present.

Source

pub fn scopes(&self) -> &[OAuth2Scope]

Returns the scopes granted with this token set.

Source

pub fn is_expired(&self) -> bool

Returns true if the token has expired.

Returns false when the provider did not return an expiry time.

Source

pub fn expires_within(&self, threshold: Duration) -> bool

Returns true if the token expires within the given threshold duration, or if the token has already expired.

Returns false when the provider did not return an expiry time.

Source§

impl TokenSet<Unvalidated>

Source

pub fn into_validated(self) -> TokenSet<Validated>

Convert an unvalidated token set to a validated one.

Callers that deserialize a stored TokenSet from JSON will receive a TokenSet<Unvalidated>. Call this to opt into the Validated state so that OIDC methods such as TokenSet::oidc are available.

Source§

impl TokenSet<Validated>

Source

pub const fn oidc(&self) -> Option<&Token>

Returns the OIDC token, if present. Only available on validated token sets.

Trait Implementations§

Source§

impl<S: Clone + ValidationState> Clone for TokenSet<S>

Source§

fn clone(&self) -> TokenSet<S>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<S: Debug + ValidationState> Debug for TokenSet<S>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for TokenSet<Unvalidated>

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<S: ValidationState> Serialize for TokenSet<S>

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl<S> Freeze for TokenSet<S>
where PhantomData<S>: Freeze,

§

impl<S> RefUnwindSafe for TokenSet<S>

§

impl<S> Send for TokenSet<S>
where PhantomData<S>: Send,

§

impl<S> Sync for TokenSet<S>
where PhantomData<S>: Sync,

§

impl<S> Unpin for TokenSet<S>
where PhantomData<S>: Unpin,

§

impl<S> UnsafeUnpin for TokenSet<S>

§

impl<S> UnwindSafe for TokenSet<S>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more