pr: processing checks
This commit is contained in:
@@ -469,6 +469,41 @@ func (gitea *GiteaTransport) GetPullRequestFileContent(pr *models.PullRequest, p
|
||||
return gitea.GetRepositoryFileContent(pr.Head.Repo, pr.Head.Sha, path)
|
||||
}
|
||||
|
||||
func (gitea *GiteaTransport) GetRecentPullRequests(org, repo string) ([]*models.PullRequest, error) {
|
||||
prs := make([]*models.PullRequest, 0, 10)
|
||||
var page int64
|
||||
page = 1
|
||||
sort := "recentupdate"
|
||||
|
||||
for {
|
||||
res, err := gitea.client.Repository.RepoListPullRequests(
|
||||
repository.NewRepoListPullRequestsParams().
|
||||
WithOwner(org).
|
||||
WithRepo(repo).
|
||||
WithPage(&page).
|
||||
WithSort(&sort),
|
||||
gitea.transport.DefaultAuthentication)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
prs = append(prs, res.Payload...)
|
||||
n := len(res.Payload)
|
||||
if n < 10 {
|
||||
break
|
||||
}
|
||||
|
||||
// if pr is closed for more than a week, assume that we are done too
|
||||
if time.Since(time.Time(res.Payload[n-1].Updated)) > 7 * 24 * time.Hour {
|
||||
break
|
||||
}
|
||||
|
||||
page++
|
||||
}
|
||||
|
||||
return prs, nil
|
||||
}
|
||||
|
||||
func (gitea *GiteaTransport) GetRecentCommits(org, repo, branch string, commitNo int64) ([]*models.Commit, error) {
|
||||
not := false
|
||||
var page int64
|
||||
|
@@ -22,6 +22,8 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
|
||||
"src.opensuse.org/autogits/common/gitea-generated/models"
|
||||
)
|
||||
|
||||
type Head struct {
|
||||
@@ -68,6 +70,43 @@ func (p *PullRequestWebhookEvent) GetAction() string {
|
||||
return p.Action
|
||||
}
|
||||
|
||||
func PullRequestLabelFromModel(labels []*models.Label) []IssueLabelDetail {
|
||||
l := make([]IssueLabelDetail, len(labels))
|
||||
for i := range labels {
|
||||
l[i].Id = int(labels[i].ID)
|
||||
l[i].Name = labels[i].Name
|
||||
l[i].Exclusive = labels[i].Exclusive
|
||||
l[i].Is_archived = labels[i].IsArchived
|
||||
l[i].Color = labels[i].Color
|
||||
l[i].Description = labels[i].Description
|
||||
l[i].Url = labels[i].URL
|
||||
}
|
||||
|
||||
return l
|
||||
}
|
||||
|
||||
func PullRequestFromModel(pr *models.PullRequest) *PullRequest {
|
||||
return &PullRequest{
|
||||
Id: int(pr.ID),
|
||||
Url: pr.URL,
|
||||
Number: int(pr.Index),
|
||||
State: string(pr.State),
|
||||
|
||||
Base: Head{
|
||||
Ref: pr.Base.Ref,
|
||||
Sha: pr.Base.Sha,
|
||||
Repo: RepositoryFromModel(pr.Base.Repo),
|
||||
},
|
||||
Head: Head{
|
||||
Ref: pr.Head.Ref,
|
||||
Sha: pr.Head.Sha,
|
||||
Repo: RepositoryFromModel(pr.Head.Repo),
|
||||
},
|
||||
Labels: PullRequestLabelFromModel(pr.Labels),
|
||||
User: *UserFromModel(pr.User),
|
||||
}
|
||||
}
|
||||
|
||||
func (h *RequestHandler) parsePullRequest(data io.Reader) (action *PullRequestWebhookEvent, err error) {
|
||||
action = new(PullRequestWebhookEvent)
|
||||
err = json.NewDecoder(data).Decode(&action)
|
||||
|
@@ -23,6 +23,8 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
|
||||
"src.opensuse.org/autogits/common/gitea-generated/models"
|
||||
)
|
||||
|
||||
type Repository struct {
|
||||
@@ -59,6 +61,44 @@ type RepositoryWebhookEvent struct {
|
||||
PrjGit string
|
||||
}
|
||||
|
||||
func UserFromModel(user *models.User) *User {
|
||||
return &User {
|
||||
Id: int(user.ID),
|
||||
Username: user.UserName,
|
||||
}
|
||||
}
|
||||
|
||||
func UsersFromModel(users []*models.User) []*User {
|
||||
u := make([]*User, len(users))
|
||||
for i := range users {
|
||||
u[i] = UserFromModel(users[i])
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func RepositoryFromModel(repo *models.Repository) *Repository {
|
||||
if repo == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return &Repository{
|
||||
Id: uint(repo.ID),
|
||||
Name: repo.Name,
|
||||
Full_Name: repo.FullName,
|
||||
Fork: repo.Fork,
|
||||
Parent: RepositoryFromModel(repo.Parent),
|
||||
Owner: &Organization{
|
||||
Id: uint(repo.Owner.ID),
|
||||
Username: repo.Owner.UserName,
|
||||
},
|
||||
Clone_Url: repo.CloneURL,
|
||||
|
||||
Ssh_Url: repo.SSHURL,
|
||||
Default_Branch: repo.DefaultBranch,
|
||||
Object_Format_Name: repo.ObjectFormatName,
|
||||
}
|
||||
}
|
||||
|
||||
func (r *RepositoryWebhookEvent) GetAction() string {
|
||||
return r.Action
|
||||
}
|
||||
|
Reference in New Issue
Block a user