Update BitBucket + GitLab Payloads

This commit is contained in:
Dean Karn
2017-04-21 22:03:45 -04:00
parent 05a2f7cd8d
commit 2d256610b0
6 changed files with 694 additions and 413 deletions
+10 -10
View File
@@ -1,10 +1,10 @@
Library webhooks
================
<img align="right" src="https://raw.githubusercontent.com/go-playground/webhooks/v2/logo.png">![Project status](https://img.shields.io/badge/version-2.1.0-green.svg)
<img align="right" src="https://raw.githubusercontent.com/go-playground/webhooks/v3/logo.png">![Project status](https://img.shields.io/badge/version-3.0.0-green.svg)
[![Build Status](https://semaphoreci.com/api/v1/projects/5b9e2eda-8f8d-40aa-8cb4-e3f6120171fe/587820/badge.svg)](https://semaphoreci.com/joeybloggs/webhooks)
[![Coverage Status](https://coveralls.io/repos/go-playground/webhooks/badge.svg?branch=v2&service=github)](https://coveralls.io/github/go-playground/webhooks?branch=v2)
[![Coverage Status](https://coveralls.io/repos/go-playground/webhooks/badge.svg?branch=v3&service=github)](https://coveralls.io/github/go-playground/webhooks?branch=v3)
[![Go Report Card](https://goreportcard.com/badge/go-playground/webhooks)](https://goreportcard.com/report/go-playground/webhooks)
[![GoDoc](https://godoc.org/gopkg.in/go-playground/webhooks.v2?status.svg)](https://godoc.org/gopkg.in/go-playground/webhooks.v2)
[![GoDoc](https://godoc.org/gopkg.in/go-playground/webhooks.v3?status.svg)](https://godoc.org/gopkg.in/go-playground/webhooks.v3)
![License](https://img.shields.io/dub/l/vibe-d.svg)
Library webhooks allows for easy recieving and parsing of GitHub, Bitbucket and GitLab Webhook Events
@@ -24,17 +24,17 @@ Installation
Use go get.
```shell
go get -u gopkg.in/go-playground/webhooks.v2
go get -u gopkg.in/go-playground/webhooks.v3
```
Then import the package into your own code.
import "gopkg.in/go-playground/webhooks.v2"
import "gopkg.in/go-playground/webhooks.v3"
Usage and Documentation
------
Please see http://godoc.org/gopkg.in/go-playground/webhooks.v2 for detailed usage docs.
Please see http://godoc.org/gopkg.in/go-playground/webhooks.v3 for detailed usage docs.
##### Examples:
@@ -46,8 +46,8 @@ import (
"fmt"
"strconv"
"gopkg.in/go-playground/webhooks.v2"
"gopkg.in/go-playground/webhooks.v2/github"
"gopkg.in/go-playground/webhooks.v3"
"gopkg.in/go-playground/webhooks.v3/github"
)
const (
@@ -104,8 +104,8 @@ import (
"fmt"
"strconv"
"gopkg.in/go-playground/webhooks.v2"
"gopkg.in/go-playground/webhooks.v2/github"
"gopkg.in/go-playground/webhooks.v3"
"gopkg.in/go-playground/webhooks.v3/github"
)
const (
+24 -19
View File
@@ -25,23 +25,24 @@ type Event string
// Bitbucket hook types
const (
RepoPushEvent Event = "repo:push"
RepoForkEvent Event = "repo:fork"
RepoCommitCommentCreatedEvent Event = "repo:commit_comment_created"
RepoCommitStatusCreatedEvent Event = "repo:commit_status_created"
RepoCommitStatusUpdatedEvent Event = "repo:commit_status_updated"
IssueCreatedEvent Event = "issue:created"
IssueUpdatedEvent Event = "issue:updated"
IssueCommentCreatedEvent Event = "issue:comment_created"
PullRequestCreatedEvent Event = "pullrequest:created"
PullRequestUpdatedEvent Event = "pullrequest:updated"
PullRequestApprovedEvent Event = "pullrequest:approved"
PullRequestApprovalRemovedEvent Event = "pullrequest:unapproved"
PullRequestMergedEvent Event = "pullrequest:fulfilled"
PullRequestDeclinedEvent Event = "pullrequest:rejected"
PullRequestCommentCreatedEvent Event = "pullrequest:comment_created"
PullRequestCommentUpdatedEvent Event = "pullrequest:comment_updated"
PullRequestCommentDeletedEvent Event = "pull_request:comment_deleted"
RepoPushEvent Event = "repo:push"
RepoForkEvent Event = "repo:fork"
RepoUpdatedEvent Event = "repo:updated"
RepoCommitCommentCreatedEvent Event = "repo:commit_comment_created"
RepoCommitStatusCreatedEvent Event = "repo:commit_status_created"
RepoCommitStatusUpdatedEvent Event = "repo:commit_status_updated"
IssueCreatedEvent Event = "issue:created"
IssueUpdatedEvent Event = "issue:updated"
IssueCommentCreatedEvent Event = "issue:comment_created"
PullRequestCreatedEvent Event = "pullrequest:created"
PullRequestUpdatedEvent Event = "pullrequest:updated"
PullRequestApprovedEvent Event = "pullrequest:approved"
PullRequestUnapprovedEvent Event = "pullrequest:unapproved"
PullRequestMergedEvent Event = "pullrequest:fulfilled"
PullRequestDeclinedEvent Event = "pullrequest:rejected"
PullRequestCommentCreatedEvent Event = "pullrequest:comment_created"
PullRequestCommentUpdatedEvent Event = "pullrequest:comment_updated"
PullRequestCommentDeletedEvent Event = "pull_request:comment_deleted"
)
// New creates and returns a WebHook instance denoted by the Provider type
@@ -111,6 +112,10 @@ func (hook Webhook) ParsePayload(w http.ResponseWriter, r *http.Request) {
var pl RepoForkPayload
json.Unmarshal([]byte(payload), &pl)
hook.runProcessPayloadFunc(fn, pl, hd)
case RepoUpdatedEvent:
var pl RepoUpdatedPayload
json.Unmarshal([]byte(payload), &pl)
hook.runProcessPayloadFunc(fn, pl, hd)
case RepoCommitCommentCreatedEvent:
var pl RepoCommitCommentCreatedPayload
json.Unmarshal([]byte(payload), &pl)
@@ -147,8 +152,8 @@ func (hook Webhook) ParsePayload(w http.ResponseWriter, r *http.Request) {
var pl PullRequestApprovedPayload
json.Unmarshal([]byte(payload), &pl)
hook.runProcessPayloadFunc(fn, pl, hd)
case PullRequestApprovalRemovedEvent:
var pl PullRequestApprovalRemovedPayload
case PullRequestUnapprovedEvent:
var pl PullRequestUnapprovedPayload
json.Unmarshal([]byte(payload), &pl)
hook.runProcessPayloadFunc(fn, pl, hd)
case PullRequestMergedEvent:
+157 -1
View File
@@ -39,7 +39,27 @@ func TestMain(m *testing.M) {
// setup
hook = New(&Config{UUID: "MY_UUID"})
hook.RegisterEvents(HandlePayload, RepoPushEvent, RepoForkEvent, RepoCommitCommentCreatedEvent, RepoCommitStatusCreatedEvent, RepoCommitStatusUpdatedEvent, IssueCreatedEvent, IssueUpdatedEvent, IssueCommentCreatedEvent, PullRequestCreatedEvent, PullRequestUpdatedEvent, PullRequestApprovedEvent, PullRequestApprovalRemovedEvent, PullRequestMergedEvent, PullRequestDeclinedEvent, PullRequestCommentCreatedEvent, PullRequestCommentUpdatedEvent, PullRequestCommentDeletedEvent)
hook.RegisterEvents(
HandlePayload,
RepoPushEvent,
RepoForkEvent,
RepoUpdatedEvent,
RepoCommitCommentCreatedEvent,
RepoCommitStatusCreatedEvent,
RepoCommitStatusUpdatedEvent,
IssueCreatedEvent,
IssueUpdatedEvent,
IssueCommentCreatedEvent,
PullRequestCreatedEvent,
PullRequestUpdatedEvent,
PullRequestApprovedEvent,
PullRequestUnapprovedEvent,
PullRequestMergedEvent,
PullRequestDeclinedEvent,
PullRequestCommentCreatedEvent,
PullRequestCommentUpdatedEvent,
PullRequestCommentDeletedEvent,
)
go webhooks.Run(hook, "127.0.0.1:"+strconv.Itoa(port), path)
time.Sleep(time.Millisecond * 500)
@@ -445,6 +465,142 @@ func TestRepoFork(t *testing.T) {
Equal(t, resp.StatusCode, http.StatusOK)
}
func TestRepoUpdated(t *testing.T) {
payload := `{
"actor": {
"type": "user",
"username": "emmap1",
"display_name": "Emma",
"uuid": "{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}",
"links": {
"self": {
"href": "https://api.bitbucket.org/api/2.0/users/emmap1"
},
"html": {
"href": "https://api.bitbucket.org/emmap1"
},
"avatar": {
"href": "https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png"
}
}
},
"repository": {
"type": "repository",
"links": {
"self": {
"href": "https://api.bitbucket.org/api/2.0/repositories/bitbucket/bitbucket"
},
"html": {
"href": "https://api.bitbucket.org/bitbucket/bitbucket"
},
"avatar": {
"href": "https://api-staging-assetroot.s3.amazonaws.com/c/photos/2014/Aug/01/bitbucket-logo-2629490769-3_avatar.png"
}
},
"uuid": "{673a6070-3421-46c9-9d48-90745f7bfe8e}",
"project": {
"type": "project",
"project": "Untitled project",
"uuid": "{3b7898dc-6891-4225-ae60-24613bb83080}",
"links": {
"html": {
"href": "https://bitbucket.org/account/user/teamawesome/projects/proj"
},
"avatar": {
"href": "https://bitbucket.org/account/user/teamawesome/projects/proj/avatar/32"
}
},
"key": "proj"
},
"full_name": "team_name/repo_name",
"name": "repo_name",
"website": "https://mywebsite.com/",
"owner": {
"type": "user",
"username": "emmap1",
"display_name": "Emma",
"uuid": "{a54f16da-24e9-4d7f-a3a7-b1ba2cd98aa3}",
"links": {
"self": {
"href": "https://api.bitbucket.org/api/2.0/users/emmap1"
},
"html": {
"href": "https://api.bitbucket.org/emmap1"
},
"avatar": {
"href": "https://bitbucket-api-assetroot.s3.amazonaws.com/c/photos/2015/Feb/26/3613917261-0-emmap1-avatar_avatar.png"
}
}
},
"scm": "git",
"is_private": true
},
"changes": {
"name": {
"new": "repository",
"old": "repository_name"
},
"website": {
"new": "http://www.example.com/",
"old": ""
},
"language": {
"new": "java",
"old": ""
},
"links": {
"new": {
"avatar": {
"href": "https://bitbucket.org/teamawesome/repository/avatar/32/"
},
"self": {
"href": "https://api.bitbucket.org/2.0/repositories/teamawesome/repository"
},
"html": {
"href": "https://bitbucket.org/teamawesome/repository"
}
},
"old": {
"avatar": {
"href": "https://bitbucket.org/teamawesome/repository_name/avatar/32/"
},
"self": {
"href": "https://api.bitbucket.org/2.0/repositories/teamawesome/repository_name"
},
"html": {
"href": "https://bitbucket.org/teamawesome/repository_name"
}
}
},
"description": {
"new": "This is a better description.",
"old": "This is a description."
},
"full_name": {
"new": "teamawesome/repository",
"old": "teamawesome/repository_name"
}
}
}
`
req, err := http.NewRequest("POST", "http://127.0.0.1:3009/webhooks", bytes.NewBuffer([]byte(payload)))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Hook-UUID", "MY_UUID")
req.Header.Set("X-Event-Key", "repo:updated")
Equal(t, err, nil)
client := &http.Client{}
resp, err := client.Do(req)
Equal(t, err, nil)
defer resp.Body.Close()
Equal(t, resp.StatusCode, http.StatusOK)
}
func TestRepoCommitCommentCreated(t *testing.T) {
payload := `{
+457 -337
View File
@@ -2,388 +2,508 @@ package bitbucket
import "time"
// PullRequestCommentDeletedPayload is the Bitbucket pull_request:comment_deleted payload
type PullRequestCommentDeletedPayload struct {
Actor User `json:"actor"`
Repository Repository `json:"repository"`
PullRequest PullRequest `json:"pullrequest"`
Comment Comment `json:"comment"`
}
// PullRequestCommentUpdatedPayload is the Bitbucket pullrequest:comment_updated payload
type PullRequestCommentUpdatedPayload struct {
Actor User `json:"actor"`
Repository Repository `json:"repository"`
PullRequest PullRequest `json:"pullrequest"`
Comment Comment `json:"comment"`
}
// PullRequestCommentCreatedPayload is the Bitbucket pullrequest:comment_created payload
type PullRequestCommentCreatedPayload struct {
Actor User `json:"actor"`
Repository Repository `json:"repository"`
PullRequest PullRequest `json:"pullrequest"`
Comment Comment `json:"comment"`
}
// PullRequestDeclinedPayload is the Bitbucket pullrequest:rejected payload
type PullRequestDeclinedPayload struct {
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullrequest"`
Repository Repository `json:"repository"`
}
// PullRequestMergedPayload is the Bitbucket pullrequest:fulfilled payload
type PullRequestMergedPayload struct {
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullrequest"`
Repository Repository `json:"repository"`
}
// PullRequestApprovalRemovedPayload is the Bitbucket pullrequest:unapproved payload
type PullRequestApprovalRemovedPayload struct {
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullrequest"`
Repository Repository `json:"repository"`
Approval Approval `json:"approval"`
}
// PullRequestApprovedPayload is the Bitbucket pullrequest:approved payload
type PullRequestApprovedPayload struct {
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullrequest"`
Repository Repository `json:"repository"`
Approval Approval `json:"approval"`
}
// PullRequestUpdatedPayload is the Bitbucket pullrequest:updated payload
type PullRequestUpdatedPayload struct {
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullrequest"`
Repository Repository `json:"repository"`
}
// PullRequestCreatedPayload is the Bitbucket pullrequest:created payload
type PullRequestCreatedPayload struct {
Actor User `json:"actor"`
PullRequest PullRequest `json:"pullrequest"`
Repository Repository `json:"repository"`
}
// IssueCommentCreatedPayload is the Bitbucket issue:comment_created payload
type IssueCommentCreatedPayload struct {
Actor User `json:"actor"`
// RepoPushPayload is the Bitbucket repo:push payload
type RepoPushPayload struct {
Actor Owner `json:"actor"`
Repository Repository `json:"repository"`
Issue Issue `json:"issue"`
Comment Comment `json:"comment"`
}
// IssueUpdatedPayload is the Bitbucket issue:updated payload
type IssueUpdatedPayload struct {
Actor User `json:"actor"`
Issue Issue `json:"issue"`
Repository Repository `json:"repository"`
Comment Comment `json:"comment"`
Changes IssueChanges `json:"changes"`
}
// IssueCreatedPayload is the Bitbucket issue:created payload
type IssueCreatedPayload struct {
Actor User `json:"actor"`
Issue Issue `json:"issue"`
Repository Repository `json:"repository"`
}
// RepoCommitStatusUpdatedPayload is the Bitbucket repo:commit_status_updated payload
type RepoCommitStatusUpdatedPayload struct {
Actor User `json:"actor"`
Repository Repository `json:"repository"`
CommitStatus CommitStatus `json:"commit_status"`
}
// RepoCommitStatusCreatedPayload is the Bitbucket repo:commit_status_created payload
type RepoCommitStatusCreatedPayload struct {
Actor User `json:"actor"`
Repository Repository `json:"repository"`
CommitStatus CommitStatus `json:"commit_status"`
}
// RepoCommitCommentCreatedPayload is the Bitbucket repo:commit_comment_created payload
type RepoCommitCommentCreatedPayload struct {
Actor User `json:"actor"`
Comment Comment `json:"comment"`
Repository Repository `json:"repository"`
Commit CommitHash `json:"commit"`
Push struct {
Changes []struct {
New struct {
Type string `json:"type"`
Name string `json:"name"`
Target struct {
Type string `json:"type"`
Hash string `json:"hash"`
Author Owner `json:"author"`
Message string `json:"message"`
Date time.Time `json:"date"`
Parents []struct {
Type string `json:"type"`
Hash string `json:"hash"`
Links struct {
Self struct {
Href string `json:"href"`
} `json:"self"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
} `json:"links"`
} `json:"parents"`
Links struct {
Self struct {
Href string `json:"href"`
} `json:"self"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
} `json:"links"`
} `json:"target"`
Links struct {
Self struct {
Href string `json:"href"`
} `json:"self"`
Commits struct {
Href string `json:"href"`
} `json:"commits"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
} `json:"links"`
} `json:"new"`
Old struct {
Type string `json:"type"`
Name string `json:"name"`
Target struct {
Type string `json:"type"`
Hash string `json:"hash"`
Author Owner `json:"author"`
Message string `json:"message"`
Date time.Time `json:"date"`
Parents []struct {
Type string `json:"type"`
Hash string `json:"hash"`
Links struct {
Self struct {
Href string `json:"href"`
} `json:"self"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
} `json:"links"`
} `json:"parents"`
Links struct {
Self struct {
Href string `json:"href"`
} `json:"self"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
} `json:"links"`
} `json:"target"`
Links struct {
Self struct {
Href string `json:"href"`
} `json:"self"`
Commits struct {
Href string `json:"href"`
} `json:"commits"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
} `json:"links"`
} `json:"old"`
Links struct {
HTML struct {
Href string `json:"href"`
} `json:"html"`
Diff struct {
Href string `json:"href"`
} `json:"diff"`
Commits struct {
Href string `json:"href"`
} `json:"commits"`
} `json:"links"`
Created bool `json:"created"`
Forced bool `json:"forced"`
Closed bool `json:"closed"`
Commits []struct {
Hash string `json:"hash"`
Type string `json:"type"`
Message string `json:"message"`
Author Owner `json:"author"`
Links struct {
Self struct {
Href string `json:"href"`
} `json:"self"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
} `json:"links"`
} `json:"commits"`
Truncated bool `json:"truncated"`
} `json:"changes"`
} `json:"push"`
}
// RepoForkPayload is the Bitbucket repo:fork payload
type RepoForkPayload struct {
Actor User `json:"actor"`
Actor Owner `json:"actor"`
Repository Repository `json:"repository"`
Fork Repository `json:"fork"`
}
// RepoPushPayload is the Bitbucket repo:push payload
type RepoPushPayload struct {
Actor User `json:"actor"`
// RepoUpdatedPayload is the Bitbucket repo:updated payload
type RepoUpdatedPayload struct {
Actor Owner `json:"actor"`
Repository Repository `json:"repository"`
Push Push `json:"push"`
Changes struct {
Name struct {
New string `json:"new"`
Old string `json:"old"`
} `json:"name"`
Website struct {
New string `json:"new"`
Old string `json:"old"`
} `json:"website"`
Language struct {
New string `json:"new"`
Old string `json:"old"`
} `json:"language"`
Links struct {
New struct {
Avatar struct {
Href string `json:"href"`
} `json:"avatar"`
Self struct {
Href string `json:"href"`
} `json:"self"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
} `json:"new"`
Old struct {
Avatar struct {
Href string `json:"href"`
} `json:"avatar"`
Self struct {
Href string `json:"href"`
} `json:"self"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
} `json:"old"`
} `json:"links"`
Description struct {
New string `json:"new"`
Old string `json:"old"`
} `json:"description"`
FullName struct {
New string `json:"new"`
Old string `json:"old"`
} `json:"full_name"`
} `json:"changes"`
}
// Approval is the common Bitbucket Issue Approval Sub Entity
type Approval struct {
Date time.Time `json:"date"`
User User `json:"user"`
// RepoCommitCommentCreatedPayload is the Bitbucket repo:commit_comment_created payload
type RepoCommitCommentCreatedPayload struct {
Actor Owner `json:"actor"`
Comment Comment `json:"comment"`
Repository Repository `json:"repository"`
Commit struct {
Hash string `json:"hash"`
} `json:"commit"`
}
// IssueChanges is the common Bitbucket Issue Changes Sub Entity
type IssueChanges struct {
Status IssueChangeStatus `json:"status"`
// RepoCommitStatusCreatedPayload is the Bitbucket repo:commit_status_created payload
type RepoCommitStatusCreatedPayload struct {
Actor Owner `json:"actor"`
Repository Repository `json:"repository"`
CommitStatus struct {
Name string `json:"name"`
Description string `json:"description"`
State string `json:"state"`
Key string `json:"key"`
URL string `json:"url"`
Type string `json:"type"`
CreatedOn time.Time `json:"created_on"`
UpdatedOn time.Time `json:"updated_on"`
Links struct {
Commit struct {
Href string `json:"href"`
} `json:"commit"`
Self struct {
Href string `json:"href"`
} `json:"self"`
} `json:"links"`
} `json:"commit_status"`
}
// IssueChangeStatus is the common Bitbucket Issue Change Status Sub Entity
type IssueChangeStatus struct {
Old string `json:"old"`
New string `json:"new"`
// RepoCommitStatusUpdatedPayload is the Bitbucket repo:commit_status_updated payload
type RepoCommitStatusUpdatedPayload struct {
Actor Owner `json:"actor"`
Repository Repository `json:"repository"`
CommitStatus struct {
Name string `json:"name"`
Description string `json:"description"`
State string `json:"state"`
Key string `json:"key"`
URL string `json:"url"`
Type string `json:"type"`
CreatedOn time.Time `json:"created_on"`
UpdatedOn time.Time `json:"updated_on"`
Links struct {
Commit struct {
Href string `json:"href"`
} `json:"commit"`
Self struct {
Href string `json:"href"`
} `json:"self"`
} `json:"links"`
} `json:"commit_status"`
}
// CommitStatus is the common Bitbucket CommitStatus Sub Entity
type CommitStatus struct {
Name string `json:"name"`
Description string `json:"description"`
State string `json:"state"`
Key string `json:"key"`
URL string `json:"url"`
Type string `json:"type"`
CreatedOn time.Time `json:"created_on"`
UpdatedOn time.Time `json:"updated_on"`
Links LinksSelfCommit `json:"links"`
// IssueCreatedPayload is the Bitbucket issue:created payload
type IssueCreatedPayload struct {
Actor Owner `json:"actor"`
Issue Issue `json:"issue"`
Repository Repository `json:"repository"`
}
// Push is the common Bitbucket Push Sub Entity
type Push struct {
Changes []Change `json:"changes"`
// IssueUpdatedPayload is the Bitbucket issue:updated payload
type IssueUpdatedPayload struct {
Actor Owner `json:"actor"`
Issue Issue `json:"issue"`
Repository Repository `json:"repository"`
Comment Comment `json:"comment"`
Changes struct {
Status struct {
Old string `json:"old"`
New string `json:"new"`
} `json:"status"`
} `json:"changes"`
}
// Change is the common Bitbucket Change Sub Entity
type Change struct {
New ChangeData `json:"new"`
Old ChangeData `json:"old"`
Links LinksHTMLDiffCommits `json:"links"`
Created bool `json:"created"`
Forced bool `json:"forced"`
Closed bool `json:"closed"`
Commits []Commit `json:"commits"`
Truncated bool `json:"truncated"`
// IssueCommentCreatedPayload is the Bitbucket pullrequest:created payload
type IssueCommentCreatedPayload struct {
Actor Owner `json:"actor"`
Repository Repository `json:"repository"`
Issue Issue `json:"issue"`
Comment Comment `json:"comment"`
}
// ChangeData is the common Bitbucket ChangeData Sub Entity
type ChangeData struct {
Type string `json:"type"`
Name string `json:"name"`
Target Target `json:"target"`
Links LinksHTMLSelfCommits `json:"links"`
// PullRequestCreatedPayload is the Bitbucket pullrequest:created payload
type PullRequestCreatedPayload struct {
Actor Owner `json:"actor"`
PullRequest PullRequest `json:"pullrequest"`
Repository Repository `json:"repository"`
}
// Target is the common Bitbucket Target Sub Entity
type Target struct {
Type string `json:"type"`
Hash string `json:"hash"`
Author User `json:"author"`
Message string `json:"message"`
Date time.Time `json:"date"`
Parents []Parent `json:"parents"`
Links LinksHTMLSelf `json:"links"`
// PullRequestUpdatedPayload is the Bitbucket pullrequest:updated payload
type PullRequestUpdatedPayload struct {
Actor Owner `json:"actor"`
PullRequest PullRequest `json:"pullrequest"`
Repository Repository `json:"repository"`
}
// Parent is the common Bitbucket Parent Sub Entity
type Parent struct {
Type string `json:"type"`
Hash string `json:"hash"`
Links LinksHTMLSelf `json:"links"`
// PullRequestApprovedPayload is the Bitbucket pullrequest:approved payload
type PullRequestApprovedPayload struct {
Actor Owner `json:"actor"`
PullRequest PullRequest `json:"pullrequest"`
Repository Repository `json:"repository"`
Approval struct {
Date time.Time `json:"date"`
User Owner `json:"user"`
} `json:"approval"`
}
// Commit is the common Bitbucket Commit Sub Entity
type Commit struct {
Hash string `json:"hash"`
Type string `json:"type"`
Message string `json:"message"`
Author User `json:"author"`
Links LinksHTMLSelf `json:"links"`
// PullRequestUnapprovedPayload is the Bitbucket pullrequest:unapproved payload
type PullRequestUnapprovedPayload struct {
Actor Owner `json:"actor"`
PullRequest PullRequest `json:"pullrequest"`
Repository Repository `json:"repository"`
Approval struct {
Date time.Time `json:"date"`
User Owner `json:"user"`
} `json:"approval"`
}
// User is the common Bitbucket User Entity
type User struct {
// PullRequestMergedPayload is the Bitbucket pullrequest:fulfilled payload
type PullRequestMergedPayload struct {
Actor Owner `json:"actor"`
PullRequest PullRequest `json:"pullrequest"`
Repository Repository `json:"repository"`
}
// PullRequestDeclinedPayload is the Bitbucket pullrequest:rejected payload
type PullRequestDeclinedPayload struct {
Actor Owner `json:"actor"`
PullRequest PullRequest `json:"pullrequest"`
Repository Repository `json:"repository"`
}
// PullRequestCommentCreatedPayload is the Bitbucket pullrequest:comment_updated payload
type PullRequestCommentCreatedPayload struct {
Actor Owner `json:"actor"`
Repository Repository `json:"repository"`
PullRequest PullRequest `json:"pullrequest"`
Comment Comment `json:"comment"`
}
// PullRequestCommentUpdatedPayload is the Bitbucket pullrequest:comment_created payload
type PullRequestCommentUpdatedPayload struct {
Actor Owner `json:"actor"`
Repository Repository `json:"repository"`
PullRequest PullRequest `json:"pullrequest"`
Comment Comment `json:"comment"`
}
// PullRequestCommentDeletedPayload is the Bitbucket pullrequest:comment_deleted payload
type PullRequestCommentDeletedPayload struct {
Actor Owner `json:"actor"`
Repository Repository `json:"repository"`
PullRequest PullRequest `json:"pullrequest"`
Comment Comment `json:"comment"`
}
// Owner is the common Bitbucket Owner Sub Entity
type Owner struct {
Type string `json:"type"`
Username string `json:"username"`
DisplayName string `json:"display_name"`
UUID string `json:"uuid"`
Links Links `json:"links"`
Links struct {
Self struct {
Href string `json:"href"`
} `json:"self"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
Avatar struct {
Href string `json:"href"`
} `json:"avatar"`
} `json:"links"`
}
// Repository is the common Bitbucket Repository Entity
// Repository is the common Bitbucket Repository Sub Entity
type Repository struct {
Links Links `json:"links"`
UUID string `json:"uuid"`
FullName string `json:"full_name"`
Name string `json:"name"`
Scm string `json:"scm"`
IsPrivate bool `json:"is_private"`
Type string `json:"type"`
Links struct {
Self struct {
Href string `json:"href"`
} `json:"self"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
Avatar struct {
Href string `json:"href"`
} `json:"avatar"`
} `json:"links"`
UUID string `json:"uuid"`
Project Project `json:"project"`
FullName string `json:"full_name"`
Name string `json:"name"`
Website string `json:"website"`
Owner Owner `json:"owner"`
Scm string `json:"scm"`
IsPrivate bool `json:"is_private"`
}
// Issue is the common Bitbucket Issue Entity
// Project is the common Bitbucket Project Sub Entity
type Project struct {
Type string `json:"type"`
Project string `json:"project"`
UUID string `json:"uuid"`
Links struct {
HTML struct {
Href string `json:"href"`
} `json:"html"`
Avatar struct {
Href string `json:"href"`
} `json:"avatar"`
} `json:"links"`
Key string `json:"key"`
}
// Issue is the common Bitbucket Issue Sub Entity
type Issue struct {
ID int64 `json:"id"`
Component string `json:"component"`
Title string `json:"title"`
Content Content `json:"content"`
Priority string `json:"priority"`
State string `json:"state"`
Type string `json:"type"`
Milestone Milestone `json:"milestone"`
Version Version `json:"version"`
CreatedOn time.Time `json:"created_on"`
UpdatedOn time.Time `json:"updated_on"`
Links LinksHTMLSelf `json:"links"`
ID int64 `json:"id"`
Component string `json:"component"`
Title string `json:"title"`
Content struct {
Raw string `json:"raw"`
HTML string `json:"html"`
Markup string `json:"markup"`
} `json:"content"`
Priority string `json:"priority"`
State string `json:"state"`
Type string `json:"type"`
Milestone struct {
Name string `json:"name"`
} `json:"milestone"`
Version struct {
Name string `json:"name"`
} `json:"version"`
CreatedOn time.Time `json:"created_on"`
UpdatedOn time.Time `json:"updated_on"`
Links struct {
Self struct {
Href string `json:"href"`
} `json:"self"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
} `json:"links"`
}
// Comment is the common Bitbucket Comment Entity
// Comment is the common Bitbucket Comment Sub Entity
type Comment struct {
ID int64 `json:"id"`
Parent ParentID `json:"parent"`
Content Content `json:"content"`
Inline Inline `json:"inline"`
CreatedOn time.Time `json:"created_on"`
UpdatedOn time.Time `json:"updated_on"`
Links LinksHTMLSelf `json:"links"`
ID int64 `json:"id"`
Parent struct {
ID int64 `json:"id"`
} `json:"parent"`
Content struct {
Raw string `json:"raw"`
HTML string `json:"html"`
Markup string `json:"markup"`
} `json:"content"`
Inline struct {
Path string `json:"path"`
From *int64 `json:"from"`
To int64 `json:"to"`
} `json:"inline"`
CreatedOn time.Time `json:"created_on"`
UpdatedOn time.Time `json:"updated_on"`
Links struct {
Self struct {
Href string `json:"href"`
} `json:"self"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
} `json:"links"`
}
// PullRequest is the common Bitbucket PullRequest Entity
// PullRequest is the common Bitbucket Pull Request Sub Entity
type PullRequest struct {
ID int64 `json:"id"`
Title string `json:"title"`
Description string `json:"description"`
State string `json:"state"`
Author User `json:"author"`
Source Source `json:"source"`
Destination Destination `json:"destination"`
MergeCommit CommitHash `json:"merge_commit"`
Participants []User `json:"participants"`
Reviewers []User `json:"reviewers"`
CloseSourceBranch bool `json:"close_source_branch"`
ClosedBy User `json:"closed_by"`
Reason string `json:"reason"`
CreatedOn time.Time `json:"created_on"`
UpdatedOn time.Time `json:"updated_on"`
Links LinksHTMLSelf `json:"links"`
}
// Destination is the common Bitbucket Destination Sub Entity
type Destination struct {
Branch Branch `json:"branch"`
Commit CommitHash `json:"commit"`
Repository Repository `json:"repository"`
}
// Source is the common Bitbucket Source Sub Entity
type Source struct {
Branch Branch `json:"branch"`
Commit CommitHash `json:"commit"`
Repository Repository `json:"repository"`
}
// Branch is the common Bitbucket Branch Sub Entity
type Branch struct {
Name string `json:"name"`
}
// CommitHash is the common Bitbucket CommitHash Sub Entity
type CommitHash struct {
Hash string `json:"hash"`
}
// Inline is the common Bitbucket Inline Sub Entity
type Inline struct {
Path string `json:"path"`
From *int64 `json:"from"`
To int64 `json:"to"`
}
// ParentID is the common Bitbucket ParentID Sub Entity
type ParentID struct {
ID int64 `json:"id"`
}
// Avatar is the common Bitbucket Avatar Sub Entity
type Avatar struct {
HREF string `json:"href"`
}
// HTML is the common Bitbucket HTML Sub Entity
type HTML struct {
HREF string `json:"href"`
}
// Self is the common Bitbucket Self Sub Entity
type Self struct {
HREF string `json:"href"`
}
// Diff is the common Bitbucket Diff Sub Entity
type Diff struct {
HREF string `json:"href"`
}
// Commits is the common Bitbucket Commits Sub Entity
type Commits struct {
HREF string `json:"href"`
}
// LinksSelfCommit is the common Bitbucket LinksSelfCommit Sub Entity
type LinksSelfCommit struct {
Self Self `json:"self"`
Commit Commits `json:"commit"`
}
// LinksHTMLSelfCommits is the common Bitbucket LinksHTMLSelfCommits Sub Entity
type LinksHTMLSelfCommits struct {
Self Self `json:"self"`
Commits Commits `json:"commits"`
HTML HTML `json:"html"`
}
// LinksHTMLDiffCommits is the common Bitbucket LinksHTMLDiffCommits Sub Entity
type LinksHTMLDiffCommits struct {
HTML HTML `json:"html"`
Diff Diff `json:"diff"`
Commits Commits `json:"commits"`
}
// Links is the common Bitbucket Links Sub Entity
type Links struct {
Avatar Avatar `json:"avatar"`
HTML HTML `json:"html"`
Self Self `json:"self"`
}
// LinksHTMLSelf is the common Bitbucket LinksHTMLSelf Sub Entity
type LinksHTMLSelf struct {
HTML HTML `json:"html"`
Self Self `json:"self"`
}
// Content is the common Bitbucket Content Sub Entity
type Content struct {
HTML string `json:"html"`
Markup string `json:"markup"`
Raw string `json:"raw"`
}
// Milestone is the common Bitbucket Milestone Sub Entity
type Milestone struct {
Name string `json:"name"`
}
// Version is the common Bitbucket Version Sub Entity
type Version struct {
Name string `json:"name"`
ID int64 `json:"id"`
Title string `json:"title"`
Description string `json:"description"`
State string `json:"state"`
Author Owner `json:"author"`
Source struct {
Branch struct {
Name string `json:"name"`
} `json:"branch"`
Commit struct {
Hash string `json:"hash"`
} `json:"commit"`
Repository Repository `json:"repository"`
} `json:"source"`
Destination struct {
Branch struct {
Name string `json:"name"`
} `json:"branch"`
Commit struct {
Hash string `json:"hash"`
} `json:"commit"`
Repository Repository `json:"repository"`
} `json:"destination"`
MergeCommit struct {
Hash string `json:"hash"`
} `json:"merge_commit"`
Participants []Owner `json:"participants"`
Reviewers []Owner `json:"reviewers"`
CloseSourceBranch bool `json:"close_source_branch"`
ClosedBy Owner `json:"closed_by"`
Reason string `json:"reason"`
CreatedOn time.Time `json:"created_on"`
UpdatedOn time.Time `json:"updated_on"`
Links struct {
Self struct {
Href string `json:"href"`
} `json:"self"`
HTML struct {
Href string `json:"href"`
} `json:"html"`
} `json:"links"`
}
+1 -1
View File
@@ -33,7 +33,7 @@ func HandleRelease(payload interface{}, header webhooks.Header) {
pl := payload.(github.ReleasePayload)
// only want to compile on full releases
if pl.Release.Draft || pl.Release.Prelelease || pl.Release.TargetCommitish != "master" {
if pl.Release.Draft || pl.Release.Prerelease || pl.Release.TargetCommitish != "master" {
return
}
+45 -45
View File
@@ -54,15 +54,15 @@ type PushEventPayload struct {
After string `json:"after"`
Ref string `json:"ref"`
CheckoutSHA string `json:"checkout_sha"`
UserID int `json:"user_id"`
UserID int64 `json:"user_id"`
UserName string `json:"user_name"`
UserEmail string `json:"user_email"`
UserAvatar string `json:"user_avatar"`
ProjectID int `json:"project_id"`
ProjectID int64 `json:"project_id"`
Project Project `json:"Project"`
Repository Repository `json:"repository"`
Commits []Commit `json:"commits"`
TotalCommitsCount int `json:"total_commits_count"`
TotalCommitsCount int64 `json:"total_commits_count"`
}
// TagEventPayload contains the information for GitLab's tag push event
@@ -72,14 +72,14 @@ type TagEventPayload struct {
After string `json:"after"`
Ref string `json:"ref"`
CheckoutSHA string `json:"checkout_sha"`
UserID int `json:"user_id"`
UserID int64 `json:"user_id"`
UserName string `json:"user_name"`
UserAvatar string `json:"user_avatar"`
ProjectID int `json:"project_id"`
ProjectID int64 `json:"project_id"`
Project Project `json:"Project"`
Repository Repository `json:"repository"`
Commits []Commit `json:"commits"`
TotalCommitsCount int `json:"total_commits_count"`
TotalCommitsCount int64 `json:"total_commits_count"`
}
// WikiPageEventPayload contains the information for GitLab's wiki created/updated event
@@ -105,7 +105,7 @@ type PipelineEventPayload struct {
type CommentEventPayload struct {
ObjectKind string `json:"object_kind"`
User User `json:"user"`
ProjectID int `json:"project_id"`
ProjectID int64 `json:"project_id"`
Project Project `json:"project"`
Repository Repository `json:"repository"`
ObjectAttributes ObjectAttributes `json:"object_attributes"`
@@ -122,15 +122,15 @@ type BuildEventPayload struct {
Tag bool `json:"tag"`
BeforeSHA string `json:"before_sha"`
SHA string `json:"sha"`
BuildID int `json:"build_id"`
BuildID int64 `json:"build_id"`
BuildName string `json:"build_name"`
BuildStage string `json:"build_stage"`
BuildStatus string `json:"build_status"`
BuildStartedAt customTime `json:"build_started_at"`
BuildFinishedAt customTime `json:"build_finished_at"`
BuildDuration int `json:"build_duration"`
BuildDuration int64 `json:"build_duration"`
BuildAllowFailure bool `json:"build_allow_failure"`
ProjectID int `json:"project_id"`
ProjectID int64 `json:"project_id"`
ProjectName string `json:"project_name"`
User User `json:"user"`
Commit BuildCommit `json:"commit"`
@@ -139,24 +139,24 @@ type BuildEventPayload struct {
// Issue contais all of the GitLab issue information
type Issue struct {
ID int `json:"id"`
ID int64 `json:"id"`
Title string `json:"title"`
AssigneeID int `json:"assignee_id"`
AuthorID int `json:"author_id"`
ProjectID int `json:"project_id"`
AssigneeID int64 `json:"assignee_id"`
AuthorID int64 `json:"author_id"`
ProjectID int64 `json:"project_id"`
CreatedAt customTime `json:"created_at"`
UpdatedAt customTime `json:"updated_at"`
Position int `json:"position"`
Position int64 `json:"position"`
BranchName string `json:"branch_name"`
Description string `json:"description"`
MilestoneID int `json:"milestone_id"`
MilestoneID int64 `json:"milestone_id"`
State string `json:"state"`
IID int `json:"iid"`
IID int64 `json:"iid"`
}
// Build contais all of the GitLab build information
type Build struct {
ID int `json:"id"`
ID int64 `json:"id"`
Stage string `json:"stage"`
Name string `json:"name"`
Status string `json:"status"`
@@ -199,30 +199,30 @@ type Commit struct {
// BuildCommit contais all of the GitLab build commit information
type BuildCommit struct {
ID int `json:"id"`
ID int64 `json:"id"`
SHA string `json:"sha"`
Message string `json:"message"`
AuthorName string `json:"auuthor_name"`
AuthorEmail string `json:"author_email"`
Status string `json:"status"`
Duration int `json:"duration"`
Duration int64 `json:"duration"`
StartedAt customTime `json:"started_at"`
FinishedAt customTime `json:"finished_at"`
}
// Snippet contais all of the GitLab snippet information
type Snippet struct {
ID int `json:"id"`
ID int64 `json:"id"`
Title string `json:"title"`
Content string `json:"content"`
AuthorID int `json:"author_id"`
ProjectID int `json:"project_id"`
AuthorID int64 `json:"author_id"`
ProjectID int64 `json:"project_id"`
CreatedAt customTime `json:"created_at"`
UpdatedAt customTime `json:"updated_at"`
FileName string `json:"file_name"`
ExpiresAt customTime `json:"expires_at"`
Type string `json:"type"`
VisibilityLevel int `json:"visibility_level"`
VisibilityLevel int64 `json:"visibility_level"`
}
// User contais all of the GitLab user information
@@ -241,7 +241,7 @@ type Project struct {
GitSSSHURL string `json:"git_ssh_url"`
GitHTTPURL string `json:"git_http_url"`
Namespace string `json:"namespace"`
VisibilityLevel int `json:"visibility_level"`
VisibilityLevel int64 `json:"visibility_level"`
PathWithNamespace string `json:"path_with_namespace"`
DefaultBranch string `json:"default_branch"`
Homepage string `json:"homepage"`
@@ -260,25 +260,25 @@ type Repository struct {
// ObjectAttributes contais all of the GitLab object attributes information
type ObjectAttributes struct {
ID int `json:"id"`
ID int64 `json:"id"`
Title string `json:"title"`
AssigneeID int `json:"assignee_id"`
AuthorID int `json:"author_id"`
ProjectID int `json:"project_id"`
AssigneeID int64 `json:"assignee_id"`
AuthorID int64 `json:"author_id"`
ProjectID int64 `json:"project_id"`
CreatedAt customTime `json:"created_at"`
UpdatedAt customTime `json:"updated_at"`
Position int `json:"position"`
Position int64 `json:"position"`
BranchName string `json:"branch_name"`
Description string `json:"description"`
MilestoneID int `json:"milestone_id"`
MilestoneID int64 `json:"milestone_id"`
State string `json:"state"`
IID int `json:"iid"`
IID int64 `json:"iid"`
URL string `json:"url"`
Action string `json:"action"`
TargetBranch string `json:"target_branch"`
SourceBranch string `json:"source_branch"`
SourceProjectID int `json:"source_project_id"`
TargetProjectID int `json:"target_project_id"`
SourceProjectID int64 `json:"source_project_id"`
TargetProjectID int64 `json:"target_project_id"`
StCommits string `json:"st_commits"`
MergeStatus string `json:"merge_status"`
Content string `json:"content"`
@@ -291,13 +291,13 @@ type ObjectAttributes struct {
BeforeSHA string `json:"before_sha"`
Status string `json:"status"`
Stages []string `json:"stages"`
Duration int `json:"duration"`
Duration int64 `json:"duration"`
Note string `json:"note"`
NotebookType string `json:"noteable_type"`
At customTime `json:"attachment"`
LineCode string `json:"line_code"`
CommitID string `json:"commit_id"`
NoteableID int `json:"noteable_id"`
NoteableID int64 `json:"noteable_id"`
System bool `json:"system"`
WorkInProgress bool `json:"work_in_progress"`
StDiffs []StDiff `json:"st_diffs"`
@@ -309,22 +309,22 @@ type ObjectAttributes struct {
// MergeRequest contais all of the GitLab merge request information
type MergeRequest struct {
ID int `json:"id"`
ID int64 `json:"id"`
TargetBranch string `json:"target_branch"`
SourceBranch string `json:"source_branch"`
SourceProjectID string `json:"source_project_id"`
AssigneeID int `json:"assignee_id"`
AuthorID int `json:"author_id"`
AssigneeID int64 `json:"assignee_id"`
AuthorID int64 `json:"author_id"`
Title string `json:"title"`
CreatedAt customTime `json:"created_at"`
UpdatedAt customTime `json:"updated_at"`
MilestoneID int `json:"milestone_id"`
MilestoneID int64 `json:"milestone_id"`
State string `json:"state"`
MergeStatus string `json:"merge_status"`
TargetProjectID int `json:"target_project_id"`
IID int `json:"iid"`
TargetProjectID int64 `json:"target_project_id"`
IID int64 `json:"iid"`
Description string `json:"description"`
Position int `json:"position"`
Position int64 `json:"position"`
LockedAt customTime `json:"locked_at"`
Source Source `json:"source"`
Target Target `json:"target"`
@@ -361,7 +361,7 @@ type Source struct {
GitSSHURL string `json:"git_ssh_url"`
GitHTTPURL string `json:"git_http_url"`
Namespace string `json:"namespace"`
VisibilityLevel int `json:"visibility_level"`
VisibilityLevel int64 `json:"visibility_level"`
PathWithNamespace string `json:"path_with_namespace"`
DefaultBranch string `json:"default_branch"`
Homepage string `json:"homepage"`
@@ -379,7 +379,7 @@ type Target struct {
GitSSHURL string `json:"git_ssh_url"`
GitHTTPURL string `json:"git_http_url"`
Namespace string `json:"namespace"`
VisibilityLevel int `json:"visibility_level"`
VisibilityLevel int64 `json:"visibility_level"`
PathWithNamespace string `json:"path_with_namespace"`
DefaultBranch string `json:"default_branch"`
Homepage string `json:"homepage"`