summaryrefslogtreecommitdiffstats
path: root/modules/webhook/feishu.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/webhook/feishu.go')
-rw-r--r--modules/webhook/feishu.go73
1 files changed, 29 insertions, 44 deletions
diff --git a/modules/webhook/feishu.go b/modules/webhook/feishu.go
index 4beda9014c..8e60dbba13 100644
--- a/modules/webhook/feishu.go
+++ b/modules/webhook/feishu.go
@@ -23,18 +23,23 @@ type (
)
// SetSecret sets the Feishu secret
-func (p *FeishuPayload) SetSecret(_ string) {}
+func (f *FeishuPayload) SetSecret(_ string) {}
// JSONPayload Marshals the FeishuPayload to json
-func (p *FeishuPayload) JSONPayload() ([]byte, error) {
- data, err := json.MarshalIndent(p, "", " ")
+func (f *FeishuPayload) JSONPayload() ([]byte, error) {
+ data, err := json.MarshalIndent(f, "", " ")
if err != nil {
return []byte{}, err
}
return data, nil
}
-func getFeishuCreatePayload(p *api.CreatePayload) (*FeishuPayload, error) {
+var (
+ _ PayloadConvertor = &FeishuPayload{}
+)
+
+// Create implements PayloadConvertor Create method
+func (f *FeishuPayload) Create(p *api.CreatePayload) (api.Payloader, error) {
// created tag/branch
refName := git.RefEndName(p.Ref)
title := fmt.Sprintf("[%s] %s %s created", p.Repo.FullName, p.RefType, refName)
@@ -45,7 +50,8 @@ func getFeishuCreatePayload(p *api.CreatePayload) (*FeishuPayload, error) {
}, nil
}
-func getFeishuDeletePayload(p *api.DeletePayload) (*FeishuPayload, error) {
+// Delete implements PayloadConvertor Delete method
+func (f *FeishuPayload) Delete(p *api.DeletePayload) (api.Payloader, error) {
// created tag/branch
refName := git.RefEndName(p.Ref)
title := fmt.Sprintf("[%s] %s %s deleted", p.Repo.FullName, p.RefType, refName)
@@ -56,7 +62,8 @@ func getFeishuDeletePayload(p *api.DeletePayload) (*FeishuPayload, error) {
}, nil
}
-func getFeishuForkPayload(p *api.ForkPayload) (*FeishuPayload, error) {
+// Fork implements PayloadConvertor Fork method
+func (f *FeishuPayload) Fork(p *api.ForkPayload) (api.Payloader, error) {
title := fmt.Sprintf("%s is forked to %s", p.Forkee.FullName, p.Repo.FullName)
return &FeishuPayload{
@@ -65,7 +72,8 @@ func getFeishuForkPayload(p *api.ForkPayload) (*FeishuPayload, error) {
}, nil
}
-func getFeishuPushPayload(p *api.PushPayload) (*FeishuPayload, error) {
+// Push implements PayloadConvertor Push method
+func (f *FeishuPayload) Push(p *api.PushPayload) (api.Payloader, error) {
var (
branchName = git.RefEndName(p.Ref)
commitDesc string
@@ -94,7 +102,8 @@ func getFeishuPushPayload(p *api.PushPayload) (*FeishuPayload, error) {
}, nil
}
-func getFeishuIssuesPayload(p *api.IssuePayload) (*FeishuPayload, error) {
+// Issue implements PayloadConvertor Issue method
+func (f *FeishuPayload) Issue(p *api.IssuePayload) (api.Payloader, error) {
text, issueTitle, attachmentText, _ := getIssuesPayloadInfo(p, noneLinkFormatter, true)
return &FeishuPayload{
@@ -103,7 +112,8 @@ func getFeishuIssuesPayload(p *api.IssuePayload) (*FeishuPayload, error) {
}, nil
}
-func getFeishuIssueCommentPayload(p *api.IssueCommentPayload) (*FeishuPayload, error) {
+// IssueComment implements PayloadConvertor IssueComment method
+func (f *FeishuPayload) IssueComment(p *api.IssueCommentPayload) (api.Payloader, error) {
text, issueTitle, _ := getIssueCommentPayloadInfo(p, noneLinkFormatter, true)
return &FeishuPayload{
@@ -112,7 +122,8 @@ func getFeishuIssueCommentPayload(p *api.IssueCommentPayload) (*FeishuPayload, e
}, nil
}
-func getFeishuPullRequestPayload(p *api.PullRequestPayload) (*FeishuPayload, error) {
+// PullRequest implements PayloadConvertor PullRequest method
+func (f *FeishuPayload) PullRequest(p *api.PullRequestPayload) (api.Payloader, error) {
text, issueTitle, attachmentText, _ := getPullRequestPayloadInfo(p, noneLinkFormatter, true)
return &FeishuPayload{
@@ -121,7 +132,8 @@ func getFeishuPullRequestPayload(p *api.PullRequestPayload) (*FeishuPayload, err
}, nil
}
-func getFeishuPullRequestApprovalPayload(p *api.PullRequestPayload, event models.HookEventType) (*FeishuPayload, error) {
+// Review implements PayloadConvertor Review method
+func (f *FeishuPayload) Review(p *api.PullRequestPayload, event models.HookEventType) (api.Payloader, error) {
var text, title string
switch p.Action {
case api.HookIssueSynchronized:
@@ -141,7 +153,8 @@ func getFeishuPullRequestApprovalPayload(p *api.PullRequestPayload, event models
}, nil
}
-func getFeishuRepositoryPayload(p *api.RepositoryPayload) (*FeishuPayload, error) {
+// Repository implements PayloadConvertor Repository method
+func (f *FeishuPayload) Repository(p *api.RepositoryPayload) (api.Payloader, error) {
var title string
switch p.Action {
case api.HookRepoCreated:
@@ -161,7 +174,8 @@ func getFeishuRepositoryPayload(p *api.RepositoryPayload) (*FeishuPayload, error
return nil, nil
}
-func getFeishuReleasePayload(p *api.ReleasePayload) (*FeishuPayload, error) {
+// Release implements PayloadConvertor Release method
+func (f *FeishuPayload) Release(p *api.ReleasePayload) (api.Payloader, error) {
text, _ := getReleasePayloadInfo(p, noneLinkFormatter, true)
return &FeishuPayload{
@@ -171,35 +185,6 @@ func getFeishuReleasePayload(p *api.ReleasePayload) (*FeishuPayload, error) {
}
// GetFeishuPayload converts a ding talk webhook into a FeishuPayload
-func GetFeishuPayload(p api.Payloader, event models.HookEventType, meta string) (*FeishuPayload, error) {
- s := new(FeishuPayload)
-
- switch event {
- case models.HookEventCreate:
- return getFeishuCreatePayload(p.(*api.CreatePayload))
- case models.HookEventDelete:
- return getFeishuDeletePayload(p.(*api.DeletePayload))
- case models.HookEventFork:
- return getFeishuForkPayload(p.(*api.ForkPayload))
- case models.HookEventIssues:
- return getFeishuIssuesPayload(p.(*api.IssuePayload))
- case models.HookEventIssueComment, models.HookEventPullRequestComment:
- pl, ok := p.(*api.IssueCommentPayload)
- if ok {
- return getFeishuIssueCommentPayload(pl)
- }
- return getFeishuPullRequestPayload(p.(*api.PullRequestPayload))
- case models.HookEventPush:
- return getFeishuPushPayload(p.(*api.PushPayload))
- case models.HookEventPullRequest:
- return getFeishuPullRequestPayload(p.(*api.PullRequestPayload))
- case models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewRejected:
- return getFeishuPullRequestApprovalPayload(p.(*api.PullRequestPayload), event)
- case models.HookEventRepository:
- return getFeishuRepositoryPayload(p.(*api.RepositoryPayload))
- case models.HookEventRelease:
- return getFeishuReleasePayload(p.(*api.ReleasePayload))
- }
-
- return s, nil
+func GetFeishuPayload(p api.Payloader, event models.HookEventType, meta string) (api.Payloader, error) {
+ return convertPayloader(new(FeishuPayload), p, event)
}