From b9424ab72e2ebbdad66f1f381392597da4726284 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 1 Oct 2017 13:56:19 +0300 Subject: [PATCH 1/2] Add support for confidential GitLab issues --- gitlab/gitlab.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/gitlab/gitlab.go b/gitlab/gitlab.go index 8b1ef08..865f97a 100644 --- a/gitlab/gitlab.go +++ b/gitlab/gitlab.go @@ -26,14 +26,15 @@ type Event string // GitLab hook types const ( - PushEvents Event = "Push Hook" - TagEvents Event = "Tag Push Hook" - IssuesEvents Event = "Issue Hook" - CommentEvents Event = "Note Hook" - MergeRequestEvents Event = "Merge Request Hook" - WikiPageEvents Event = "Wiki Page Hook" - PipelineEvents Event = "Pipeline Hook" - BuildEvents Event = "Build Hook" + PushEvents Event = "Push Hook" + TagEvents Event = "Tag Push Hook" + IssuesEvents Event = "Issue Hook" + ConfidentialIssuesEvents Event = "Confidential Issue Hook" + CommentEvents Event = "Note Hook" + MergeRequestEvents Event = "Merge Request Hook" + WikiPageEvents Event = "Wiki Page Hook" + PipelineEvents Event = "Pipeline Hook" + BuildEvents Event = "Build Hook" ) // New creates and returns a WebHook instance denoted by the Provider type @@ -112,6 +113,9 @@ func (hook Webhook) ParsePayload(w http.ResponseWriter, r *http.Request) { json.Unmarshal([]byte(payload), &te) hook.runProcessPayloadFunc(fn, te, hd) + case ConfidentialIssuesEvents: + // Confidential issues have the same payload as normal issues. + fallthrough case IssuesEvents: var ie IssueEventPayload json.Unmarshal([]byte(payload), &ie) From 13e6611c00a7dd05ba85e6871f9bfa891c25a2c4 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 1 Oct 2017 23:11:52 +0300 Subject: [PATCH 2/2] Add separate payload type for confidential issues --- gitlab/gitlab.go | 6 ++++-- gitlab/payload.go | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gitlab/gitlab.go b/gitlab/gitlab.go index 865f97a..cac3a3e 100644 --- a/gitlab/gitlab.go +++ b/gitlab/gitlab.go @@ -114,8 +114,10 @@ func (hook Webhook) ParsePayload(w http.ResponseWriter, r *http.Request) { hook.runProcessPayloadFunc(fn, te, hd) case ConfidentialIssuesEvents: - // Confidential issues have the same payload as normal issues. - fallthrough + var cie ConfidentialIssueEventPayload + json.Unmarshal([]byte(payload), &cie) + hook.runProcessPayloadFunc(fn, cie, hd) + case IssuesEvents: var ie IssueEventPayload json.Unmarshal([]byte(payload), &ie) diff --git a/gitlab/payload.go b/gitlab/payload.go index 3d06d5f..ea98144 100644 --- a/gitlab/payload.go +++ b/gitlab/payload.go @@ -40,6 +40,13 @@ type IssueEventPayload struct { Assignee Assignee `json:"assignee"` } +// ConfidentialIssueEventPayload contains the information for GitLab's confidential issue event +type ConfidentialIssueEventPayload struct { + // The data for confidential issues is currently the same as normal issues, + // so we can just embed the normal issue payload type here. + IssueEventPayload +} + // MergeRequestEventPayload contains the information for GitLab's merge request event type MergeRequestEventPayload struct { ObjectKind string `json:"object_kind"`