You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
2.8 KiB
Go
117 lines
2.8 KiB
Go
// Copyright 2017 Drone.IO Inc. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package harness
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"git.awesome-for.me/liuzhiguo/go-scm/scm"
|
|
)
|
|
|
|
func buildHarnessURI(account, organization, project, repo string) (uri string) {
|
|
if account != "" {
|
|
uri = fmt.Sprintf("%s/%s/%s/", account, organization, project)
|
|
if repo != "" {
|
|
uri += fmt.Sprintf("%s/+", repo)
|
|
} else {
|
|
uri += "+"
|
|
}
|
|
return uri
|
|
}
|
|
return repo
|
|
}
|
|
|
|
func encodeListOptions(opts scm.ListOptions) string {
|
|
params := url.Values{}
|
|
if opts.Page != 0 {
|
|
params.Set("page", strconv.Itoa(opts.Page))
|
|
}
|
|
if opts.Size != 0 {
|
|
params.Set("limit", strconv.Itoa(opts.Size))
|
|
}
|
|
return params.Encode()
|
|
}
|
|
|
|
func encodeIssueListOptions(opts scm.IssueListOptions) string {
|
|
params := url.Values{}
|
|
if opts.Page != 0 {
|
|
params.Set("page", strconv.Itoa(opts.Page))
|
|
}
|
|
if opts.Size != 0 {
|
|
params.Set("limit", strconv.Itoa(opts.Size))
|
|
}
|
|
if opts.Open && opts.Closed {
|
|
params.Set("state", "all")
|
|
} else if opts.Closed {
|
|
params.Set("state", "closed")
|
|
}
|
|
return params.Encode()
|
|
}
|
|
|
|
func encodePullRequestListOptions(opts scm.PullRequestListOptions) string {
|
|
params := url.Values{}
|
|
if opts.Page != 0 {
|
|
params.Set("page", strconv.Itoa(opts.Page))
|
|
}
|
|
if opts.Size != 0 {
|
|
params.Set("limit", strconv.Itoa(opts.Size))
|
|
}
|
|
if opts.Open && opts.Closed {
|
|
params.Set("state", "all")
|
|
} else if opts.Closed {
|
|
params.Set("state", "closed")
|
|
}
|
|
return params.Encode()
|
|
}
|
|
|
|
// convertAPIURLToHTMLURL converts an release API endpoint into a html endpoint
|
|
func convertAPIURLToHTMLURL(apiURL string, tagName string) string {
|
|
// "url": "https://try.gitea.com/api/v1/repos/octocat/Hello-World/123",
|
|
// "html_url": "https://try.gitea.com/octocat/Hello-World/releases/tag/v1.0.0",
|
|
// the url field is the API url, not the html url, so until go-sdk v0.13.3, build it ourselves
|
|
link, err := url.Parse(apiURL)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
|
|
pathParts := strings.Split(link.Path, "/")
|
|
if len(pathParts) != 7 {
|
|
return ""
|
|
}
|
|
link.Path = fmt.Sprintf("/%s/%s/releases/tag/%s", pathParts[4], pathParts[5], tagName)
|
|
return link.String()
|
|
}
|
|
|
|
func encodeMilestoneListOptions(opts scm.MilestoneListOptions) string {
|
|
params := url.Values{}
|
|
if opts.Page != 0 {
|
|
params.Set("page", strconv.Itoa(opts.Page))
|
|
}
|
|
if opts.Size != 0 {
|
|
params.Set("per_page", strconv.Itoa(opts.Size))
|
|
}
|
|
if opts.Open && opts.Closed {
|
|
params.Set("state", "all")
|
|
} else if opts.Closed {
|
|
params.Set("state", "closed")
|
|
}
|
|
return params.Encode()
|
|
}
|
|
|
|
type ListOptions struct {
|
|
Page int
|
|
PageSize int
|
|
}
|
|
|
|
func encodeReleaseListOptions(o ListOptions) string {
|
|
query := make(url.Values)
|
|
query.Add("page", fmt.Sprintf("%d", o.Page))
|
|
query.Add("limit", fmt.Sprintf("%d", o.PageSize))
|
|
return query.Encode()
|
|
}
|