0
0
mirror of https://github.com/thegeeklab/drone-admin.git synced 2024-11-23 14:50:40 +00:00
drone-admin/admin/client/client.go

49 lines
925 B
Go

package client
import (
"context"
"crypto/tls"
"net/http"
"net/url"
"time"
"github.com/drone/drone-go/drone"
"github.com/jackspirou/syscerts"
"golang.org/x/oauth2"
)
func New(server, token string) (drone.Client, error) {
s, err := url.Parse(server)
if err != nil {
return nil, err
}
if len(s.Scheme) == 0 {
s.Scheme = "http"
}
// attempt to find system CA certs
certs := syscerts.SystemRootsPool()
tlsConfig := &tls.Config{
RootCAs: certs,
InsecureSkipVerify: false,
}
oauth := new(oauth2.Config)
authenticator := oauth.Client(
context.Background(),
&oauth2.Token{
AccessToken: token,
},
)
authenticator.Timeout, _ = time.ParseDuration("60s")
trans, _ := authenticator.Transport.(*oauth2.Transport)
trans.Base = &http.Transport{
TLSClientConfig: tlsConfig,
Proxy: http.ProxyFromEnvironment,
}
return drone.NewClient(s.String(), authenticator), nil
}