package oauth import ( "context" "net/http" "golang.org/x/oauth2" "golang.org/x/oauth2/clientcredentials" ) type OAuth2Config struct { // OAuth2 Credentials ClientID string `toml:"client_id"` ClientSecret string `toml:"client_secret"` TokenURL string `toml:"token_url"` Scopes []string `toml:"scopes"` } func (o *OAuth2Config) CreateOauth2Client(ctx context.Context, client *http.Client) *http.Client { if o.ClientID != "" && o.ClientSecret != "" && o.TokenURL != "" { oauthConfig := clientcredentials.Config{ ClientID: o.ClientID, ClientSecret: o.ClientSecret, TokenURL: o.TokenURL, Scopes: o.Scopes, } ctx = context.WithValue(ctx, oauth2.HTTPClient, client) client = oauthConfig.Client(ctx) } return client }