blob: bfb3e3f2e1fcb467436074b4a947c7d01dccb642 [file] [log] [blame]
package auth_steps
/*
This package provides auth initialization. It is a wrapper around the
go.skia.org/infra/go/auth package.
*/
import (
"context"
"net/http"
"go.skia.org/infra/go/httputils"
"go.skia.org/infra/go/luciauth"
"go.skia.org/infra/task_driver/go/td"
"golang.org/x/oauth2"
"golang.org/x/oauth2/google"
)
func Init(ctx context.Context, local bool, scopes ...string) (oauth2.TokenSource, error) {
var ts oauth2.TokenSource
err := td.Do(ctx, td.Props("Auth Init").Infra(), func(context.Context) error {
var err error
if local {
ts, err = google.DefaultTokenSource(ctx, scopes...)
} else {
ts, err = luciauth.NewLUCIContextTokenSource(scopes...)
}
return err
})
return ts, err
}
func HttpClient(ctx context.Context, ts oauth2.TokenSource) *http.Client {
return td.HttpClient(ctx, httputils.DefaultClientConfig().WithTokenSource(ts).With2xxOnly().Client())
}
func InitHttpClient(ctx context.Context, local bool, scopes ...string) (*http.Client, error) {
ts, err := Init(ctx, local, scopes...)
if err != nil {
return nil, err
}
return HttpClient(ctx, ts), nil
}