github.com/argoproj/argo-cd/v2@v2.10.9/applicationset/services/pull_request/gitea.go (about) 1 package pull_request 2 3 import ( 4 "context" 5 "crypto/tls" 6 "net/http" 7 "net/http/cookiejar" 8 "os" 9 10 "code.gitea.io/sdk/gitea" 11 ) 12 13 type GiteaService struct { 14 client *gitea.Client 15 owner string 16 repo string 17 } 18 19 var _ PullRequestService = (*GiteaService)(nil) 20 21 func NewGiteaService(ctx context.Context, token, url, owner, repo string, insecure bool) (PullRequestService, error) { 22 if token == "" { 23 token = os.Getenv("GITEA_TOKEN") 24 } 25 httpClient := &http.Client{} 26 if insecure { 27 cookieJar, _ := cookiejar.New(nil) 28 29 tr := http.DefaultTransport.(*http.Transport).Clone() 30 tr.TLSClientConfig = &tls.Config{InsecureSkipVerify: true} 31 32 httpClient = &http.Client{ 33 Jar: cookieJar, 34 Transport: tr, 35 } 36 } 37 client, err := gitea.NewClient(url, gitea.SetToken(token), gitea.SetHTTPClient(httpClient)) 38 if err != nil { 39 return nil, err 40 } 41 return &GiteaService{ 42 client: client, 43 owner: owner, 44 repo: repo, 45 }, nil 46 } 47 48 func (g *GiteaService) List(ctx context.Context) ([]*PullRequest, error) { 49 opts := gitea.ListPullRequestsOptions{ 50 State: gitea.StateOpen, 51 } 52 prs, _, err := g.client.ListRepoPullRequests(g.owner, g.repo, opts) 53 if err != nil { 54 return nil, err 55 } 56 list := []*PullRequest{} 57 for _, pr := range prs { 58 list = append(list, &PullRequest{ 59 Number: int(pr.Index), 60 Branch: pr.Head.Ref, 61 TargetBranch: pr.Base.Ref, 62 HeadSHA: pr.Head.Sha, 63 Labels: getGiteaPRLabelNames(pr.Labels), 64 }) 65 } 66 return list, nil 67 } 68 69 // Get the Gitea pull request label names. 70 func getGiteaPRLabelNames(giteaLabels []*gitea.Label) []string { 71 var labelNames []string 72 for _, giteaLabel := range giteaLabels { 73 labelNames = append(labelNames, giteaLabel.Name) 74 } 75 return labelNames 76 }