// newClient creates http.Client with a jwt service account when // jsonFile flag is specified, otherwise by obtaining the GCE service // account's access token. func newClient(jsonFile string) (*http.Client, error) { if jsonFile != "" { jsonKey, err := ioutil.ReadFile(jsonFile) if err != nil { return nil, err } conf, err := google.JWTConfigFromJSON(jsonKey, pubsub.ScopePubSub) if err != nil { return nil, err } return conf.Client(oauth2.NoContext), nil } if metadata.OnGCE() { c := &http.Client{ Transport: &oauth2.Transport{ Source: google.ComputeTokenSource(""), }, } if *projID == "" { projectID, err := metadata.ProjectID() if err != nil { return nil, fmt.Errorf("ProjectID failed, %v", err) } *projID = projectID } return c, nil } return nil, errors.New("Could not create an authenticated client.") }
// GoogleServiceClient fetchs a token from Google Compute Engine's // metadata service. This should be used on GCE vms. The Default account // is used. func GoogleServiceClient() *http.Client { return &http.Client{ Transport: &oauth2.Transport{ Source: google.ComputeTokenSource(""), }, } }
func ExampleComputeTokenSource() { client := &http.Client{ Transport: &oauth2.Transport{ // Fetch from Google Compute Engine's metadata server to retrieve // an access token for the provided account. // If no account is specified, "default" is used. Source: google.ComputeTokenSource(""), }, } client.Get("...") }
// GoogleServiceTokenSource provides an oauth2.TokenSource authorized in // the same manner as GoogleServiceClient(). func GoogleServiceTokenSource() oauth2.TokenSource { return google.ComputeTokenSource("") }
// NewComputeEngine constructs the credentials that fetches access tokens from // Google Compute Engine (GCE)'s metadata server. It is only valid to use this // if your program is running on a GCE instance. // TODO(dsymonds): Deprecate and remove this. func NewComputeEngine() credentials.Credentials { return TokenSource{google.ComputeTokenSource("")} }