Skip to content

Commit fb180c5

Browse files
committed
Replaced duplicated code.
1 parent 2474d63 commit fb180c5

File tree

3 files changed

+34
-115
lines changed

3 files changed

+34
-115
lines changed

services/webhook/dingtalk.go

Lines changed: 21 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,7 @@ func (d *DingtalkPayload) Create(p *api.CreatePayload) (api.Payloader, error) {
4444
refName := git.RefEndName(p.Ref)
4545
title := fmt.Sprintf("[%s] %s %s created", p.Repo.FullName, p.RefType, refName)
4646

47-
return &DingtalkPayload{
48-
MsgType: "actionCard",
49-
ActionCard: dingtalk.ActionCard{
50-
Text: title,
51-
Title: title,
52-
HideAvatar: "0",
53-
SingleTitle: fmt.Sprintf("view ref %s", refName),
54-
SingleURL: p.Repo.HTMLURL + "/src/" + refName,
55-
},
56-
}, nil
47+
return createDingtalkPayload(title, title, fmt.Sprintf("view ref %s", refName), p.Repo.HTMLURL+"/src/"+refName), nil
5748
}
5849

5950
// Delete implements PayloadConvertor Delete method
@@ -62,32 +53,14 @@ func (d *DingtalkPayload) Delete(p *api.DeletePayload) (api.Payloader, error) {
6253
refName := git.RefEndName(p.Ref)
6354
title := fmt.Sprintf("[%s] %s %s deleted", p.Repo.FullName, p.RefType, refName)
6455

65-
return &DingtalkPayload{
66-
MsgType: "actionCard",
67-
ActionCard: dingtalk.ActionCard{
68-
Text: title,
69-
Title: title,
70-
HideAvatar: "0",
71-
SingleTitle: fmt.Sprintf("view ref %s", refName),
72-
SingleURL: p.Repo.HTMLURL + "/src/" + refName,
73-
},
74-
}, nil
56+
return createDingtalkPayload(title, title, fmt.Sprintf("view ref %s", refName), p.Repo.HTMLURL+"/src/"+refName), nil
7557
}
7658

7759
// Fork implements PayloadConvertor Fork method
7860
func (d *DingtalkPayload) Fork(p *api.ForkPayload) (api.Payloader, error) {
7961
title := fmt.Sprintf("%s is forked to %s", p.Forkee.FullName, p.Repo.FullName)
8062

81-
return &DingtalkPayload{
82-
MsgType: "actionCard",
83-
ActionCard: dingtalk.ActionCard{
84-
Text: title,
85-
Title: title,
86-
HideAvatar: "0",
87-
SingleTitle: fmt.Sprintf("view forked repo %s", p.Repo.FullName),
88-
SingleURL: p.Repo.HTMLURL,
89-
},
90-
}, nil
63+
return createDingtalkPayload(title, title, fmt.Sprintf("view forked repo %s", p.Repo.FullName), p.Repo.HTMLURL), nil
9164
}
9265

9366
// Push implements PayloadConvertor Push method
@@ -124,70 +97,32 @@ func (d *DingtalkPayload) Push(p *api.PushPayload) (api.Payloader, error) {
12497
strings.TrimRight(commit.Message, "\r\n")) + authorName
12598
// add linebreak to each commit but the last
12699
if i < len(p.Commits)-1 {
127-
text += "\n"
100+
text += "\r\n"
128101
}
129102
}
130103

131-
return &DingtalkPayload{
132-
MsgType: "actionCard",
133-
ActionCard: dingtalk.ActionCard{
134-
Text: text,
135-
Title: title,
136-
HideAvatar: "0",
137-
SingleTitle: linkText,
138-
SingleURL: titleLink,
139-
},
140-
}, nil
104+
return createDingtalkPayload(title, text, linkText, titleLink), nil
141105
}
142106

143107
// Issue implements PayloadConvertor Issue method
144108
func (d *DingtalkPayload) Issue(p *api.IssuePayload) (api.Payloader, error) {
145109
text, issueTitle, attachmentText, _ := getIssuesPayloadInfo(p, noneLinkFormatter, true)
146110

147-
return &DingtalkPayload{
148-
MsgType: "actionCard",
149-
ActionCard: dingtalk.ActionCard{
150-
Text: strings.TrimSpace(text + "\r\n\r\n" + attachmentText),
151-
//Markdown: "# " + title + "\n" + text,
152-
Title: issueTitle,
153-
HideAvatar: "0",
154-
SingleTitle: "view issue",
155-
SingleURL: p.Issue.HTMLURL,
156-
},
157-
}, nil
111+
return createDingtalkPayload(issueTitle, text+"\r\n\r\n"+attachmentText, "view issue", p.Issue.HTMLURL), nil
158112
}
159113

160114
// IssueComment implements PayloadConvertor IssueComment method
161115
func (d *DingtalkPayload) IssueComment(p *api.IssueCommentPayload) (api.Payloader, error) {
162116
text, issueTitle, _ := getIssueCommentPayloadInfo(p, noneLinkFormatter, true)
163117

164-
return &DingtalkPayload{
165-
MsgType: "actionCard",
166-
ActionCard: dingtalk.ActionCard{
167-
Text: text + "\r\n\r\n" + p.Comment.Body,
168-
Title: issueTitle,
169-
HideAvatar: "0",
170-
SingleTitle: "view issue comment",
171-
SingleURL: p.Comment.HTMLURL,
172-
},
173-
}, nil
118+
return createDingtalkPayload(issueTitle, text+"\r\n\r\n"+p.Comment.Body, "view issue comment", p.Comment.HTMLURL), nil
174119
}
175120

176121
// PullRequest implements PayloadConvertor PullRequest method
177122
func (d *DingtalkPayload) PullRequest(p *api.PullRequestPayload) (api.Payloader, error) {
178123
text, issueTitle, attachmentText, _ := getPullRequestPayloadInfo(p, noneLinkFormatter, true)
179124

180-
return &DingtalkPayload{
181-
MsgType: "actionCard",
182-
ActionCard: dingtalk.ActionCard{
183-
Text: text + "\r\n\r\n" + attachmentText,
184-
//Markdown: "# " + title + "\n" + text,
185-
Title: issueTitle,
186-
HideAvatar: "0",
187-
SingleTitle: "view pull request",
188-
SingleURL: p.PullRequest.HTMLURL,
189-
},
190-
}, nil
125+
return createDingtalkPayload(issueTitle, text+"\r\n\r\n"+attachmentText, "view pull request", p.PullRequest.HTMLURL), nil
191126
}
192127

193128
// Review implements PayloadConvertor Review method
@@ -205,37 +140,17 @@ func (d *DingtalkPayload) Review(p *api.PullRequestPayload, event models.HookEve
205140

206141
}
207142

208-
return &DingtalkPayload{
209-
MsgType: "actionCard",
210-
ActionCard: dingtalk.ActionCard{
211-
Text: title + "\r\n\r\n" + text,
212-
Title: title,
213-
HideAvatar: "0",
214-
SingleTitle: "view pull request",
215-
SingleURL: p.PullRequest.HTMLURL,
216-
},
217-
}, nil
143+
return createDingtalkPayload(title, title+"\r\n\r\n"+text, "view pull request", p.PullRequest.HTMLURL), nil
218144
}
219145

220146
// Repository implements PayloadConvertor Repository method
221147
func (d *DingtalkPayload) Repository(p *api.RepositoryPayload) (api.Payloader, error) {
222-
var title, url string
223148
switch p.Action {
224149
case api.HookRepoCreated:
225-
title = fmt.Sprintf("[%s] Repository created", p.Repository.FullName)
226-
url = p.Repository.HTMLURL
227-
return &DingtalkPayload{
228-
MsgType: "actionCard",
229-
ActionCard: dingtalk.ActionCard{
230-
Text: title,
231-
Title: title,
232-
HideAvatar: "0",
233-
SingleTitle: "view repository",
234-
SingleURL: url,
235-
},
236-
}, nil
150+
title := fmt.Sprintf("[%s] Repository created", p.Repository.FullName)
151+
return createDingtalkPayload(title, title, "view repository", p.Repository.HTMLURL), nil
237152
case api.HookRepoDeleted:
238-
title = fmt.Sprintf("[%s] Repository deleted", p.Repository.FullName)
153+
title := fmt.Sprintf("[%s] Repository deleted", p.Repository.FullName)
239154
return &DingtalkPayload{
240155
MsgType: "text",
241156
Text: struct {
@@ -253,16 +168,20 @@ func (d *DingtalkPayload) Repository(p *api.RepositoryPayload) (api.Payloader, e
253168
func (d *DingtalkPayload) Release(p *api.ReleasePayload) (api.Payloader, error) {
254169
text, _ := getReleasePayloadInfo(p, noneLinkFormatter, true)
255170

171+
return createDingtalkPayload(text, text, "view release", p.Release.URL), nil
172+
}
173+
174+
func createDingtalkPayload(title, text, singleTitle, singleURL string) *DingtalkPayload {
256175
return &DingtalkPayload{
257176
MsgType: "actionCard",
258177
ActionCard: dingtalk.ActionCard{
259-
Text: text,
260-
Title: text,
178+
Text: strings.TrimSpace(text),
179+
Title: strings.TrimSpace(title),
261180
HideAvatar: "0",
262-
SingleTitle: "view release",
263-
SingleURL: p.Release.URL,
181+
SingleTitle: singleTitle,
182+
SingleURL: singleURL,
264183
},
265-
}, nil
184+
}
266185
}
267186

268187
// GetDingtalkPayload converts a ding talk webhook into a DingtalkPayload

services/webhook/dingtalk_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func TestDingTalkPayload(t *testing.T) {
6969
require.NotNil(t, pl)
7070
require.IsType(t, &DingtalkPayload{}, pl)
7171

72-
assert.Equal(t, "[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) commit message - user1\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) commit message - user1", pl.(*DingtalkPayload).ActionCard.Text)
72+
assert.Equal(t, "[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) commit message - user1\r\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) commit message - user1", pl.(*DingtalkPayload).ActionCard.Text)
7373
assert.Equal(t, "[test/repo:test] 2 new commits", pl.(*DingtalkPayload).ActionCard.Title)
7474
assert.Equal(t, "view commit 2020558...2020558", pl.(*DingtalkPayload).ActionCard.SingleTitle)
7575
assert.Equal(t, "http://localhost:3000/test/repo/src/test", pl.(*DingtalkPayload).ActionCard.SingleURL)

services/webhook/telegram.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func (t *TelegramPayload) Create(p *api.CreatePayload) (api.Payloader, error) {
6868
title := fmt.Sprintf(`[<a href="%s">%s</a>] %s <a href="%s">%s</a> created`, p.Repo.HTMLURL, p.Repo.FullName, p.RefType,
6969
p.Repo.HTMLURL+"/src/"+refName, refName)
7070

71-
return createPayload(title), nil
71+
return createTelegramPayload(title), nil
7272
}
7373

7474
// Delete implements PayloadConvertor Delete method
@@ -78,14 +78,14 @@ func (t *TelegramPayload) Delete(p *api.DeletePayload) (api.Payloader, error) {
7878
title := fmt.Sprintf(`[<a href="%s">%s</a>] %s <a href="%s">%s</a> deleted`, p.Repo.HTMLURL, p.Repo.FullName, p.RefType,
7979
p.Repo.HTMLURL+"/src/"+refName, refName)
8080

81-
return createPayload(title), nil
81+
return createTelegramPayload(title), nil
8282
}
8383

8484
// Fork implements PayloadConvertor Fork method
8585
func (t *TelegramPayload) Fork(p *api.ForkPayload) (api.Payloader, error) {
8686
title := fmt.Sprintf(`%s is forked to <a href="%s">%s</a>`, p.Forkee.FullName, p.Repo.HTMLURL, p.Repo.FullName)
8787

88-
return createPayload(title), nil
88+
return createTelegramPayload(title), nil
8989
}
9090

9191
// Push implements PayloadConvertor Push method
@@ -123,28 +123,28 @@ func (t *TelegramPayload) Push(p *api.PushPayload) (api.Payloader, error) {
123123
}
124124
}
125125

126-
return createPayload(title + "\n" + text), nil
126+
return createTelegramPayload(title + "\n" + text), nil
127127
}
128128

129129
// Issue implements PayloadConvertor Issue method
130130
func (t *TelegramPayload) Issue(p *api.IssuePayload) (api.Payloader, error) {
131131
text, _, attachmentText, _ := getIssuesPayloadInfo(p, htmlLinkFormatter, true)
132132

133-
return createPayload(text + "\n\n" + attachmentText), nil
133+
return createTelegramPayload(text + "\n\n" + attachmentText), nil
134134
}
135135

136136
// IssueComment implements PayloadConvertor IssueComment method
137137
func (t *TelegramPayload) IssueComment(p *api.IssueCommentPayload) (api.Payloader, error) {
138138
text, _, _ := getIssueCommentPayloadInfo(p, htmlLinkFormatter, true)
139139

140-
return createPayload(text + "\n" + p.Comment.Body), nil
140+
return createTelegramPayload(text + "\n" + p.Comment.Body), nil
141141
}
142142

143143
// PullRequest implements PayloadConvertor PullRequest method
144144
func (t *TelegramPayload) PullRequest(p *api.PullRequestPayload) (api.Payloader, error) {
145145
text, _, attachmentText, _ := getPullRequestPayloadInfo(p, htmlLinkFormatter, true)
146146

147-
return createPayload(text + "\n" + attachmentText), nil
147+
return createTelegramPayload(text + "\n" + attachmentText), nil
148148
}
149149

150150
// Review implements PayloadConvertor Review method
@@ -161,7 +161,7 @@ func (t *TelegramPayload) Review(p *api.PullRequestPayload, event models.HookEve
161161
attachmentText = p.Review.Content
162162
}
163163

164-
return createPayload(text + "\n" + attachmentText), nil
164+
return createTelegramPayload(text + "\n" + attachmentText), nil
165165
}
166166

167167
// Repository implements PayloadConvertor Repository method
@@ -170,10 +170,10 @@ func (t *TelegramPayload) Repository(p *api.RepositoryPayload) (api.Payloader, e
170170
switch p.Action {
171171
case api.HookRepoCreated:
172172
title = fmt.Sprintf(`[<a href="%s">%s</a>] Repository created`, p.Repository.HTMLURL, p.Repository.FullName)
173-
return createPayload(title), nil
173+
return createTelegramPayload(title), nil
174174
case api.HookRepoDeleted:
175175
title = fmt.Sprintf("[%s] Repository deleted", p.Repository.FullName)
176-
return createPayload(title), nil
176+
return createTelegramPayload(title), nil
177177
}
178178
return nil, nil
179179
}
@@ -182,15 +182,15 @@ func (t *TelegramPayload) Repository(p *api.RepositoryPayload) (api.Payloader, e
182182
func (t *TelegramPayload) Release(p *api.ReleasePayload) (api.Payloader, error) {
183183
text, _ := getReleasePayloadInfo(p, htmlLinkFormatter, true)
184184

185-
return createPayload(text), nil
185+
return createTelegramPayload(text), nil
186186
}
187187

188188
// GetTelegramPayload converts a telegram webhook into a TelegramPayload
189189
func GetTelegramPayload(p api.Payloader, event models.HookEventType, meta string) (api.Payloader, error) {
190190
return convertPayloader(new(TelegramPayload), p, event)
191191
}
192192

193-
func createPayload(message string) *TelegramPayload {
193+
func createTelegramPayload(message string) *TelegramPayload {
194194
return &TelegramPayload{
195195
Message: strings.TrimSpace(message),
196196
}

0 commit comments

Comments
 (0)