...

Package internaloption

import "google.golang.org/api/option/internaloption"
Overview
Index
Examples

Overview ▾

Package internaloption contains options used internally by Google client code.

func AllowNonDefaultServiceAccount

func AllowNonDefaultServiceAccount(nd bool) option.ClientOption

AllowNonDefaultServiceAccount returns a ClientOption that overrides the default requirement for using the default service account for DirectPath.

It should only be used internally by generated clients. This is an EXPERIMENTAL API and may be changed or removed in the future.

func EnableDirectPath

func EnableDirectPath(dp bool) option.ClientOption

EnableDirectPath returns a ClientOption that overrides the default attempt to use DirectPath.

It should only be used internally by generated clients. This is an EXPERIMENTAL API and may be changed or removed in the future.

func EnableDirectPathXds

func EnableDirectPathXds() option.ClientOption

EnableDirectPathXds returns a ClientOption that overrides the default DirectPath type. It is only valid when DirectPath is enabled.

It should only be used internally by generated clients. This is an EXPERIMENTAL API and may be changed or removed in the future.

func EnableJwtWithScope

func EnableJwtWithScope() option.ClientOption

EnableJwtWithScope returns a ClientOption that specifies if scope can be used with self-signed JWT.

EnableJwtWithScope is ignored when option.WithUniverseDomain is set to a value other than the Google Default Universe (GDU) of "googleapis.com". For non-GDU domains, token exchange is impossible and services must support self-signed JWTs with scopes.

func EnableNewAuthLibrary

func EnableNewAuthLibrary() option.ClientOption

EnableNewAuthLibrary returns a ClientOption that specifies if libraries in this module to delegate auth to our new library. This option will be removed in the future once all clients have been moved to the new auth layer.

func SkipDialSettingsValidation

func SkipDialSettingsValidation() option.ClientOption

SkipDialSettingsValidation bypasses validation on ClientOptions.

It should only be used internally.

func WithCredentials

func WithCredentials(creds *google.Credentials) option.ClientOption

WithCredentials returns a client option to specify credentials which will be used to authenticate API calls. This credential takes precedence over all other credential options.

func WithDefaultAudience

func WithDefaultAudience(audience string) option.ClientOption

WithDefaultAudience returns a ClientOption that specifies a default audience to be used as the audience field ("aud") for the JWT token authentication.

It should only be used internally by generated clients.

func WithDefaultEndpoint

func WithDefaultEndpoint(url string) option.ClientOption

WithDefaultEndpoint is an option that indicates the default endpoint.

It should only be used internally by generated clients.

This is similar to WithEndpoint, but allows us to determine whether the user has overridden the default endpoint.

Deprecated: WithDefaultEndpoint does not support setting the universe domain. Use WithDefaultEndpointTemplate and WithDefaultUniverseDomain to compose the default endpoint instead.

func WithDefaultEndpointTemplate

func WithDefaultEndpointTemplate(url string) option.ClientOption

WithDefaultEndpointTemplate provides a template for creating the endpoint using a universe domain. See also WithDefaultUniverseDomain and option.WithUniverseDomain. The placeholder UNIVERSE_DOMAIN should be used instead of a concrete universe domain such as "googleapis.com".

Example: WithDefaultEndpointTemplate("https://logging.UNIVERSE_DOMAIN/")

It should only be used internally by generated clients.

func WithDefaultMTLSEndpoint

func WithDefaultMTLSEndpoint(url string) option.ClientOption

WithDefaultMTLSEndpoint is an option that indicates the default mTLS endpoint.

It should only be used internally by generated clients.

func WithDefaultScopes

func WithDefaultScopes(scope ...string) option.ClientOption

WithDefaultScopes returns a ClientOption that overrides the default OAuth2 scopes to be used for a service.

It should only be used internally by generated clients.

func WithDefaultUniverseDomain

func WithDefaultUniverseDomain(ud string) option.ClientOption

WithDefaultUniverseDomain returns a ClientOption that sets the default universe domain.

It should only be used internally by generated clients.

This is similar to the public WithUniverse, but allows us to determine whether the user has overridden the default universe.

type EmbeddableAdapter

EmbeddableAdapter is a no-op option.ClientOption that allow libraries to create their own client options by embedding this type into their own client-specific option wrapper. See example for usage.

type EmbeddableAdapter struct{}

Example

Code:

package internaloption_test

import (
    "context"
    "fmt"

    "google.golang.org/api/option"
    "google.golang.org/api/option/internaloption"
)

type config struct {
    i int
}

type clientSpecificOption interface {
    option.ClientOption
    ApplyOpt(*config)
}

func WithFavoriteNumber(i int) option.ClientOption {
    return &withFavoriteNumber{i: i}
}

type withFavoriteNumber struct {
    internaloption.EmbeddableAdapter
    i int
}

func (w *withFavoriteNumber) ApplyOpt(c *config) {
    c.i = w.i
}

type Foo struct {
    i int
}

func NewFoo(ctx context.Context, opts ...option.ClientOption) (*Foo, error) {
    var conf config
    for _, opt := range opts {
        if fooOpt, ok := opt.(clientSpecificOption); ok {
            fooOpt.ApplyOpt(&conf)
        }
    }
    // Pass options to internals for dialing. All client-specific options will
    // be no-ops.
    return &Foo{i: conf.i}, nil
}

func (f *Foo) Number() int { return f.i }

func ExampleEmbeddableAdapter() {
    f, err := NewFoo(context.Background(), WithFavoriteNumber(42))
    if err != nil {
        // TODO: handle error
    }
    fmt.Println(f.Number())
    // Output: 42
}

func (*EmbeddableAdapter) Apply

func (*EmbeddableAdapter) Apply(_ *internal.DialSettings)