webhooks/bitbucket-server/payload.go

282 lines
10 KiB
Go

package bitbucketserver
import (
"fmt"
"strings"
"time"
)
type DiagnosticsPingPayload struct{}
type RepositoryReferenceChangedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
Repository Repository `json:"repository"`
Changes []RepositoryChange `json:"changes"`
}
type RepositoryModifiedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
Old Repository `json:"old"`
New Repository `json:"new"`
}
type RepositoryForkedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
Repository Repository `json:"repository"`
}
type RepositoryCommentAddedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
Comment Comment `json:"comment"`
Repository Repository `json:"repository"`
Commit string `json:"commit"`
}
type RepositoryCommentEditedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
Comment Comment `json:"comment"`
PreviousComment string `json:"previousComment"`
Repository Repository `json:"repository"`
Commit string `json:"commit"`
}
type RepositoryCommentDeletedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
Comment Comment `json:"comment"`
Repository Repository `json:"repository"`
Commit string `json:"commit"`
}
type PullRequestOpenedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
}
type PullRequestFromReferenceUpdatedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
PreviousFromHash string `json:"previousFromHash"`
}
type PullRequestModifiedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
PreviousTitle string `json:"previousTitle"`
PreviousDescription string `json:"previousDescription"`
PreviousTarget map[string]interface{} `json:"previousTarget"`
}
type PullRequestMergedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
}
type PullRequestDeclinedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
}
type PullRequestDeletedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
}
type PullRequestReviewerUpdatedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
RemovedReviewers []User `json:"removedReviewers"`
AddedReviewers []User `json:"addedReviewers"`
}
type PullRequestReviewerApprovedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
Participant PullRequestParticipant `json:"participant"`
PreviousStatus string `json:"previousStatus"`
}
type PullRequestReviewerUnapprovedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
Participant PullRequestParticipant `json:"participant"`
PreviousStatus string `json:"previousStatus"`
}
type PullRequestReviewerNeedsWorkPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
Participant PullRequestParticipant `json:"participant"`
PreviousStatus string `json:"previousStatus"`
}
type PullRequestCommentAddedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
Comment Comment `json:"comment"`
CommentParentId uint64 `json:"commentParentId,omitempty"`
}
type PullRequestCommentEditedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
Comment Comment `json:"comment"`
CommentParentId string `json:"commentParentId,omitempty"`
PreviousComment string `json:"previousComment"`
}
type PullRequestCommentDeletedPayload struct {
Date Date `json:"date"`
EventKey Event `json:"eventKey"`
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullRequest"`
Comment Comment `json:"comment"`
CommentParentId uint64 `json:"commentParentId,omitempty"`
}
// -----------------------
type User struct {
ID uint64 `json:"id"`
Name string `json:"name"`
EmailAddress string `json:"emailAddress"`
DisplayName string `json:"displayName"`
Active bool `json:"active"`
Slug string `json:"slug"`
Type string `json:"type"`
Links map[string]interface{} `json:"links"`
}
type Repository struct {
ID uint64 `json:"id"`
Slug string `json:"slug"`
Name string `json:"name"`
ScmId string `json:"scmId"`
State string `json:"state"`
StatusMessage string `json:"statusMessage"`
Forkable bool `json:"forkable"`
Origin *Repository `json:"origin,omitempty"`
Project Project `json:"project"`
Public bool `json:"public"`
Links map[string]interface{} `json:"links"`
}
type Project struct {
ID uint64 `json:"id"`
Key string `json:"key"`
Name string `json:"name"`
Type string `json:"type"`
Public *bool `json:"public,omitempty"`
Owner User `json:"owner"`
Links map[string]interface{} `json:"links"`
}
type PullRequest struct {
ID uint64 `json:"id"`
Version uint64 `json:"version"`
Title string `json:"title"`
Description string `json:"description,omitempty"`
State string `json:"state"`
Open bool `json:"open"`
Closed bool `json:"closed"`
CreatedDate uint64 `json:"createdDate"`
UpdatedDate uint64 `json:"updatedDate,omitempty"`
ClosedDate uint64 `json:"closedDate,omitempty"`
FromRef RepositoryReference `json:"fromRef"`
ToRef RepositoryReference `json:"toRef"`
Locked bool `json:"locked"`
Author PullRequestParticipant `json:"author"`
Reviewers []PullRequestParticipant `json:"reviewers"`
Participants []PullRequestParticipant `json:"participants"`
Properties map[string]interface{} `json:"properties,omitempty"`
Links map[string]interface{} `json:"links"`
}
type RepositoryChange struct {
Reference RepositoryReference `json:"ref"`
ReferenceId string `json:"refId"`
FromHash string `json:"fromHash"`
ToHash string `json:"toHash"`
Type string `json:"type"`
}
type RepositoryReference struct {
ID string `json:"id"`
DisplayId string `json:"displayId"`
Type string `json:"type,omitempty"`
LatestCommit string `json:"latestCommit,omitempty"`
Repository Repository `json:"repository,omitempty"`
}
type Comment struct {
ID uint64 `json:"id"`
Properties map[string]interface{} `json:"properties,omitempty"`
Version uint64 `json:"version"`
Text string `json:"text"`
Author User `json:"author"`
CreatedDate uint64 `json:"createdDate"`
UpdatedDate uint64 `json:"updatedDate"`
Comments []map[string]interface{} `json:"comments"`
Tasks []map[string]interface{} `json:"tasks"`
PermittedOperations map[string]interface{} `json:"permittedOperations,omitempty"`
}
type PullRequestParticipant struct {
User User `json:"user"`
LastReviewedCommit string `json:"lastReviewedCommit,omitempty"`
Role string `json:"role"`
Approved bool `json:"approved"`
Status string `json:"status"`
}
type Date time.Time
func (b *Date) UnmarshalJSON(p []byte) error {
t, err := time.Parse("2006-01-02T15:04:05Z0700", strings.Replace(string(p), "\"", "", -1))
if err != nil {
return err
}
*b = Date(t)
return nil
}
func (b Date) MarshalJSON() ([]byte, error) {
stamp := fmt.Sprintf("\"%s\"", time.Time(b).Format("2006-01-02T15:04:05Z0700"))
return []byte(stamp), nil
}