* Move repository package to apps
* Move operators to grafana/grafana
* Go mod tidy
* Own package by git sync team for now
* Merged
* Do not use settings in local extra
* Remove dependency on webhook extra
* Hack to work around issue with secure contracts
* Sync Go modules
* Revert "Move operators to grafana/grafana"
This reverts commit 9f19b30a2e.
40 lines
1022 B
Go
40 lines
1022 B
Go
package github
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
|
|
"github.com/google/go-github/v70/github"
|
|
"golang.org/x/oauth2"
|
|
|
|
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
|
)
|
|
|
|
// Factory creates new GitHub clients.
|
|
// It exists only for the ability to test the code easily.
|
|
type Factory struct {
|
|
// Client allows overriding the client to use in the GH client returned. It exists primarily for testing.
|
|
// FIXME: we should replace in this way. We should add some options pattern for the factory.
|
|
Client *http.Client
|
|
}
|
|
|
|
func ProvideFactory() *Factory {
|
|
return &Factory{}
|
|
}
|
|
|
|
func (r *Factory) New(ctx context.Context, ghToken common.RawSecureValue) Client {
|
|
if r.Client != nil {
|
|
return NewClient(github.NewClient(r.Client))
|
|
}
|
|
|
|
if !ghToken.IsZero() {
|
|
tokenSrc := oauth2.StaticTokenSource(
|
|
&oauth2.Token{AccessToken: string(ghToken)},
|
|
)
|
|
tokenClient := oauth2.NewClient(ctx, tokenSrc)
|
|
return NewClient(github.NewClient(tokenClient))
|
|
}
|
|
|
|
return NewClient(github.NewClient(&http.Client{}))
|
|
}
|