summaryrefslogtreecommitdiffstats
path: root/services/webhook/discord.go
diff options
context:
space:
mode:
Diffstat (limited to 'services/webhook/discord.go')
-rw-r--r--services/webhook/discord.go202
1 files changed, 33 insertions, 169 deletions
diff --git a/services/webhook/discord.go b/services/webhook/discord.go
index d28904715f..378d9ff725 100644
--- a/services/webhook/discord.go
+++ b/services/webhook/discord.go
@@ -120,22 +120,7 @@ func (d *DiscordPayload) Create(p *api.CreatePayload) (api.Payloader, error) {
refName := git.RefEndName(p.Ref)
title := fmt.Sprintf("[%s] %s %s created", p.Repo.FullName, p.RefType, refName)
- return &DiscordPayload{
- Username: d.Username,
- AvatarURL: d.AvatarURL,
- Embeds: []DiscordEmbed{
- {
- Title: title,
- URL: p.Repo.HTMLURL + "/src/" + refName,
- Color: greenColor,
- Author: DiscordEmbedAuthor{
- Name: p.Sender.UserName,
- URL: setting.AppURL + p.Sender.UserName,
- IconURL: p.Sender.AvatarURL,
- },
- },
- },
- }, nil
+ return d.createPayload(p.Sender, title, "", p.Repo.HTMLURL+"/src/"+refName, greenColor), nil
}
// Delete implements PayloadConvertor Delete method
@@ -144,44 +129,14 @@ func (d *DiscordPayload) Delete(p *api.DeletePayload) (api.Payloader, error) {
refName := git.RefEndName(p.Ref)
title := fmt.Sprintf("[%s] %s %s deleted", p.Repo.FullName, p.RefType, refName)
- return &DiscordPayload{
- Username: d.Username,
- AvatarURL: d.AvatarURL,
- Embeds: []DiscordEmbed{
- {
- Title: title,
- URL: p.Repo.HTMLURL + "/src/" + refName,
- Color: redColor,
- Author: DiscordEmbedAuthor{
- Name: p.Sender.UserName,
- URL: setting.AppURL + p.Sender.UserName,
- IconURL: p.Sender.AvatarURL,
- },
- },
- },
- }, nil
+ return d.createPayload(p.Sender, title, "", p.Repo.HTMLURL+"/src/"+refName, redColor), nil
}
// Fork implements PayloadConvertor Fork method
func (d *DiscordPayload) Fork(p *api.ForkPayload) (api.Payloader, error) {
title := fmt.Sprintf("%s is forked to %s", p.Forkee.FullName, p.Repo.FullName)
- return &DiscordPayload{
- Username: d.Username,
- AvatarURL: d.AvatarURL,
- Embeds: []DiscordEmbed{
- {
- Title: title,
- URL: p.Repo.HTMLURL,
- Color: greenColor,
- Author: DiscordEmbedAuthor{
- Name: p.Sender.UserName,
- URL: setting.AppURL + p.Sender.UserName,
- IconURL: p.Sender.AvatarURL,
- },
- },
- },
- }, nil
+ return d.createPayload(p.Sender, title, "", p.Repo.HTMLURL, greenColor), nil
}
// Push implements PayloadConvertor Push method
@@ -216,92 +171,28 @@ func (d *DiscordPayload) Push(p *api.PushPayload) (api.Payloader, error) {
}
}
- return &DiscordPayload{
- Username: d.Username,
- AvatarURL: d.AvatarURL,
- Embeds: []DiscordEmbed{
- {
- Title: title,
- Description: text,
- URL: titleLink,
- Color: greenColor,
- Author: DiscordEmbedAuthor{
- Name: p.Sender.UserName,
- URL: setting.AppURL + p.Sender.UserName,
- IconURL: p.Sender.AvatarURL,
- },
- },
- },
- }, nil
+ return d.createPayload(p.Sender, title, text, titleLink, greenColor), nil
}
// Issue implements PayloadConvertor Issue method
func (d *DiscordPayload) Issue(p *api.IssuePayload) (api.Payloader, error) {
- text, _, attachmentText, color := getIssuesPayloadInfo(p, noneLinkFormatter, false)
+ title, _, text, color := getIssuesPayloadInfo(p, noneLinkFormatter, false)
- return &DiscordPayload{
- Username: d.Username,
- AvatarURL: d.AvatarURL,
- Embeds: []DiscordEmbed{
- {
- Title: text,
- Description: attachmentText,
- URL: p.Issue.HTMLURL,
- Color: color,
- Author: DiscordEmbedAuthor{
- Name: p.Sender.UserName,
- URL: setting.AppURL + p.Sender.UserName,
- IconURL: p.Sender.AvatarURL,
- },
- },
- },
- }, nil
+ return d.createPayload(p.Sender, title, text, p.Issue.HTMLURL, color), nil
}
// IssueComment implements PayloadConvertor IssueComment method
func (d *DiscordPayload) IssueComment(p *api.IssueCommentPayload) (api.Payloader, error) {
- text, _, color := getIssueCommentPayloadInfo(p, noneLinkFormatter, false)
+ title, _, color := getIssueCommentPayloadInfo(p, noneLinkFormatter, false)
- return &DiscordPayload{
- Username: d.Username,
- AvatarURL: d.AvatarURL,
- Embeds: []DiscordEmbed{
- {
- Title: text,
- Description: p.Comment.Body,
- URL: p.Comment.HTMLURL,
- Color: color,
- Author: DiscordEmbedAuthor{
- Name: p.Sender.UserName,
- URL: setting.AppURL + p.Sender.UserName,
- IconURL: p.Sender.AvatarURL,
- },
- },
- },
- }, nil
+ return d.createPayload(p.Sender, title, p.Comment.Body, p.Comment.HTMLURL, color), nil
}
// PullRequest implements PayloadConvertor PullRequest method
func (d *DiscordPayload) PullRequest(p *api.PullRequestPayload) (api.Payloader, error) {
- text, _, attachmentText, color := getPullRequestPayloadInfo(p, noneLinkFormatter, false)
+ title, _, text, color := getPullRequestPayloadInfo(p, noneLinkFormatter, false)
- return &DiscordPayload{
- Username: d.Username,
- AvatarURL: d.AvatarURL,
- Embeds: []DiscordEmbed{
- {
- Title: text,
- Description: attachmentText,
- URL: p.PullRequest.HTMLURL,
- Color: color,
- Author: DiscordEmbedAuthor{
- Name: p.Sender.UserName,
- URL: setting.AppURL + p.Sender.UserName,
- IconURL: p.Sender.AvatarURL,
- },
- },
- },
- }, nil
+ return d.createPayload(p.Sender, title, text, p.PullRequest.HTMLURL, color), nil
}
// Review implements PayloadConvertor Review method
@@ -330,23 +221,7 @@ func (d *DiscordPayload) Review(p *api.PullRequestPayload, event models.HookEven
}
}
- return &DiscordPayload{
- Username: d.Username,
- AvatarURL: d.AvatarURL,
- Embeds: []DiscordEmbed{
- {
- Title: title,
- Description: text,
- URL: p.PullRequest.HTMLURL,
- Color: color,
- Author: DiscordEmbedAuthor{
- Name: p.Sender.UserName,
- URL: setting.AppURL + p.Sender.UserName,
- IconURL: p.Sender.AvatarURL,
- },
- },
- },
- }, nil
+ return d.createPayload(p.Sender, title, text, p.PullRequest.HTMLURL, color), nil
}
// Repository implements PayloadConvertor Repository method
@@ -363,45 +238,14 @@ func (d *DiscordPayload) Repository(p *api.RepositoryPayload) (api.Payloader, er
color = redColor
}
- return &DiscordPayload{
- Username: d.Username,
- AvatarURL: d.AvatarURL,
- Embeds: []DiscordEmbed{
- {
- Title: title,
- URL: url,
- Color: color,
- Author: DiscordEmbedAuthor{
- Name: p.Sender.UserName,
- URL: setting.AppURL + p.Sender.UserName,
- IconURL: p.Sender.AvatarURL,
- },
- },
- },
- }, nil
+ return d.createPayload(p.Sender, title, "", url, color), nil
}
// Release implements PayloadConvertor Release method
func (d *DiscordPayload) Release(p *api.ReleasePayload) (api.Payloader, error) {
text, color := getReleasePayloadInfo(p, noneLinkFormatter, false)
- return &DiscordPayload{
- Username: d.Username,
- AvatarURL: d.AvatarURL,
- Embeds: []DiscordEmbed{
- {
- Title: text,
- Description: p.Release.Note,
- URL: p.Release.URL,
- Color: color,
- Author: DiscordEmbedAuthor{
- Name: p.Sender.UserName,
- URL: setting.AppURL + p.Sender.UserName,
- IconURL: p.Sender.AvatarURL,
- },
- },
- },
- }, nil
+ return d.createPayload(p.Sender, text, p.Release.Note, p.Release.URL, color), nil
}
// GetDiscordPayload converts a discord webhook into a DiscordPayload
@@ -433,3 +277,23 @@ func parseHookPullRequestEventType(event models.HookEventType) (string, error) {
return "", errors.New("unknown event type")
}
}
+
+func (d *DiscordPayload) createPayload(s *api.User, title, text, url string, color int) *DiscordPayload {
+ return &DiscordPayload{
+ Username: d.Username,
+ AvatarURL: d.AvatarURL,
+ Embeds: []DiscordEmbed{
+ {
+ Title: title,
+ Description: text,
+ URL: url,
+ Color: color,
+ Author: DiscordEmbedAuthor{
+ Name: s.UserName,
+ URL: setting.AppURL + s.UserName,
+ IconURL: s.AvatarURL,
+ },
+ },
+ },
+ }
+}