token.go (22 lines of code) (raw):
package vertexai
import (
"context"
"fmt"
"golang.org/x/oauth2/google"
)
type tokenizer interface {
getToken(key string) (string, error)
}
type defaultTokenizer struct{}
// getToken returns the access token.
func (*defaultTokenizer) getToken(key string) (string, error) {
scopes := []string{"https://www.googleapis.com/auth/cloud-platform"}
credentials, err := google.CredentialsFromJSON(context.Background(), []byte(key), scopes...)
if err != nil {
return "", fmt.Errorf("GetToken: Unable to get credentials from the JSON: %v", err)
}
// Create a new access token from the retrieved credentials.
token, err := credentials.TokenSource.Token()
if err != nil {
return "", fmt.Errorf("GetToken: Unable to retrieve token from token source: %v", err)
}
return token.AccessToken, nil
}