github.com/argoproj/argo-cd/v2@v2.10.9/applicationset/services/internal/github_app/client.go (about) 1 package github_app 2 3 import ( 4 "fmt" 5 "net/http" 6 7 "github.com/bradleyfalzon/ghinstallation/v2" 8 "github.com/google/go-github/v35/github" 9 10 "github.com/argoproj/argo-cd/v2/applicationset/services/github_app_auth" 11 ) 12 13 // Client builds a github client for the given app authentication. 14 func Client(g github_app_auth.Authentication, url string) (*github.Client, error) { 15 rt, err := ghinstallation.New(http.DefaultTransport, g.Id, g.InstallationId, []byte(g.PrivateKey)) 16 if err != nil { 17 return nil, fmt.Errorf("failed to create github app install: %w", err) 18 } 19 if url == "" { 20 url = g.EnterpriseBaseURL 21 } 22 var client *github.Client 23 if url == "" { 24 httpClient := http.Client{Transport: rt} 25 client = github.NewClient(&httpClient) 26 } else { 27 rt.BaseURL = url 28 httpClient := http.Client{Transport: rt} 29 client, err = github.NewEnterpriseClient(url, url, &httpClient) 30 if err != nil { 31 return nil, fmt.Errorf("failed to create github enterprise client: %w", err) 32 } 33 } 34 return client, nil 35 }