Skip to main content

DataCloudToken

Struct DataCloudToken 

Source
pub struct DataCloudToken { /* private fields */ }
Expand description

Data Cloud JWT (DC JWT) for Hyper gRPC authentication.

Obtained by exchanging an OAuth Access Token at /services/a360/token. Sent as the Authorization: Bearer <jwt> header with every gRPC call to the Hyper query engine.

The DC JWT has a ~2-hour lifetime (exp claim), but is proactively refreshed much earlier (every ~15 minutes by default) so that the underlying OAuth Access Token is revalidated before Salesforce’s server-side inactivity timeout can invalidate it.

Implementations§

Source§

impl DataCloudToken

Source

pub fn from_response( response: DataCloudTokenResponse, ) -> SalesforceAuthResult<Self>

Creates a DC JWT from a /services/a360/token response.

§Errors
Source

pub fn bearer_token(&self) -> String

Returns the bearer token string for the Authorization header.

Format: "Bearer <dc_jwt>"

Source

pub fn access_token(&self) -> &str

Returns just the DC JWT value (without the type prefix).

Source

pub fn token_type(&self) -> &str

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

Source

pub fn tenant_url(&self) -> &Url

Returns the Data Cloud tenant URL.

Source

pub fn tenant_url_str(&self) -> &str

Returns the tenant URL as a string (for the audience gRPC header).

Source

pub fn created_at(&self) -> DateTime<Utc>

Returns when this DC JWT was obtained.

Source

pub fn expires_at(&self) -> DateTime<Utc>

Returns the DC JWT expiration time.

Source

pub fn age(&self) -> Duration

Returns the age of this DC JWT (time since it was obtained).

Source

pub fn remaining_lifetime(&self) -> Duration

Returns the remaining lifetime of this DC JWT.

Source

pub fn is_valid(&self) -> bool

Checks if the DC JWT is still valid (not expired).

Returns true if the DC JWT has at least 300 seconds (5 minutes) of remaining lifetime. This buffer ensures callers never use a DC JWT that is about to expire.

Source

pub fn is_expired(&self) -> bool

Checks if the DC JWT is expired.

Source

pub fn needs_refresh(&self, threshold_secs: i64, max_age_secs: i64) -> bool

Checks if the DC JWT should be proactively refreshed.

Mirrors the C++ IsDCJWTExpiringSoon logic: returns true when either the DC JWT is near its hard expiry OR it has exceeded the maximum age. This ensures:

  • The OAuth Access Token is revalidated regularly (catching server-side inactivity timeouts)
  • The DC JWT is replaced well before its ~2-hour hard expiry
§Arguments
  • threshold_secs - Refresh when the DC JWT has fewer than this many seconds remaining (default: 300 = 5 minutes)
  • max_age_secs - Refresh when the DC JWT is older than this many seconds (default: 900 = 15 minutes)
Source

pub fn tenant_id(&self) -> SalesforceAuthResult<String>

Extracts the tenant ID from the DC JWT payload.

The tenant ID is stored in the audienceTenantId claim of the JWT.

§Errors

Returns SalesforceAuthError::TokenParse if:

  • The JWT does not have exactly three dot-separated parts.
  • The payload segment is not valid base64url (via base64_url_decode).
  • The decoded payload is not valid JSON (via the From conversion from serde_json::Error).
  • The payload object is missing a string-valued audienceTenantId claim.
Source

pub fn lakehouse_name( &self, dataspace: Option<&str>, ) -> SalesforceAuthResult<String>

Returns the lakehouse name for Hyper connection.

Format: "lakehouse:<tenant_id>;<dataspace>"

§Errors

Propagates any SalesforceAuthError::TokenParse from Self::tenant_id (malformed JWT structure, non-base64url payload, non-JSON payload, or missing audienceTenantId claim).

Trait Implementations§

Source§

impl Clone for DataCloudToken

Source§

fn clone(&self) -> DataCloudToken

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 Debug for DataCloudToken

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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: 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: 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 = Infallible

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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