blob: a697eacb551fd6bc34c7e801989a09c388b3d73b [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/auth"
"go.skia.org/infra/go/httputils"
"go.skia.org/infra/go/luciauth"
"go.skia.org/infra/task_driver/go/td"
"golang.org/x/oauth2"
)
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 = auth.NewDefaultTokenSource(true, 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
}