Struct Builder

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

A builder for constructing user_account Credentials instance.

§Example

let authorized_user = serde_json::json!({ /* add details here */ });
let credentials = Builder::new(authorized_user).build();
})

Implementations§

Source§

impl Builder

Source

pub fn new(authorized_user: Value) -> Self

Creates a new builder using authorized_user JSON value.

The authorized_user JSON is typically generated when a user authenticates using the application-default login process.

Source

pub fn with_token_uri<S: Into<String>>(self, token_uri: S) -> Self

Sets the URI for the token endpoint used to fetch access tokens.

Any value provided here overrides a token_uri value from the input authorized_user JSON. Defaults to https://oauth2.googleapis.com/token if not specified here or in the authorized_user JSON.

§Example
let authorized_user = serde_json::json!({ /* add details here */ });
let credentials = Builder::new(authorized_user)
    .with_token_uri("https://oauth2-FOOBAR.p.googleapis.com")
    .build();
Source

pub fn with_scopes<I, S>(self, scopes: I) -> Self
where I: IntoIterator<Item = S>, S: Into<String>,

Sets the scopes for these credentials.

scopes define the permissions being requested for this specific access token when interacting with a service. For example, https://www.googleapis.com/auth/devstorage.read_write. IAM permissions, on the other hand, define the underlying capabilities the user account possesses within a system. For example, storage.buckets.delete. When a token generated with specific scopes is used, the request must be permitted by both the user account’s underlying IAM permissions and the scopes requested for the token. Therefore, scopes act as an additional restriction on what the token can be used for.

§Example
let authorized_user = serde_json::json!({ /* add details here */ });
let credentials = Builder::new(authorized_user)
    .with_scopes(["https://www.googleapis.com/auth/pubsub"])
    .build();
Source

pub fn with_quota_project_id<S: Into<String>>(self, quota_project_id: S) -> Self

Sets the quota project for these credentials.

In some services, you can use an account in one project for authentication and authorization, and charge the usage to a different project. This requires that the user has serviceusage.services.use permissions on the quota project.

Any value set here overrides a quota_project_id value from the input authorized_user JSON.

§Example
let authorized_user = serde_json::json!("{ /* add details here */ }");
let credentials = Builder::new(authorized_user)
    .with_quota_project_id("my-project")
    .build();
Source

pub fn with_retry_policy<V: Into<RetryPolicyArg>>(self, v: V) -> Self

Configure the retry policy for fetching tokens.

The retry policy controls how to handle retries, and sets limits on the number of attempts or the total time spent retrying.

use gax::retry_policy::{AlwaysRetry, RetryPolicyExt};
let authorized_user = serde_json::json!({
    "client_id": "YOUR_CLIENT_ID.apps.googleusercontent.com",
    "client_secret": "YOUR_CLIENT_SECRET",
    "refresh_token": "YOUR_REFRESH_TOKEN",
    "type": "authorized_user",
});
let credentials = Builder::new(authorized_user)
    .with_retry_policy(AlwaysRetry.with_attempt_limit(3))
    .build();
Source

pub fn with_backoff_policy<V: Into<BackoffPolicyArg>>(self, v: V) -> Self

Configure the retry backoff policy.

The backoff policy controls how long to wait in between retry attempts.

use gax::exponential_backoff::ExponentialBackoff;
let authorized_user = serde_json::json!({
    "client_id": "YOUR_CLIENT_ID.apps.googleusercontent.com",
    "client_secret": "YOUR_CLIENT_SECRET",
    "refresh_token": "YOUR_REFRESH_TOKEN",
    "type": "authorized_user",
});
let credentials = Builder::new(authorized_user)
    .with_backoff_policy(ExponentialBackoff::default())
    .build();
Source

pub fn with_retry_throttler<V: Into<RetryThrottlerArg>>(self, v: V) -> Self

Configure the retry throttler.

Advanced applications may want to configure a retry throttler to Address Cascading Failures and when Handling Overload conditions. The authentication library throttles its retry loop, using a policy to control the throttling algorithm. Use this method to fine tune or customize the default retry throttler.

use gax::retry_throttler::AdaptiveThrottler;
let authorized_user = serde_json::json!({
    "client_id": "YOUR_CLIENT_ID.apps.googleusercontent.com",
    "client_secret": "YOUR_CLIENT_SECRET",
    "refresh_token": "YOUR_REFRESH_TOKEN",
    "type": "authorized_user",
});
let credentials = Builder::new(authorized_user)
    .with_retry_throttler(AdaptiveThrottler::default())
    .build();
Source

pub fn build(self) -> Result<Credentials, Error>

Returns a Credentials instance with the configured settings.

§Errors

Returns a CredentialsError if the authorized_user provided to Builder::new cannot be successfully deserialized into the expected format. This typically happens if the JSON value is malformed or missing required fields. For more information, on how to generate authorized_user json, consult the relevant section in the application-default credentials guide.

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> 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, 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
Source§

impl<T> ErasedDestructor for T
where T: 'static,