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  }