From 8216360da89bec1f3df75fe15ee57bfdcc290339 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Tue, 21 Feb 2017 11:36:19 -0500 Subject: [PATCH] webhook: support color for Discord --- gogs.go | 2 +- models/webhook_discord.go | 8 ++++++++ modules/auth/repo_form.go | 1 + routers/repo/webhook.go | 2 ++ templates/.VERSION | 2 +- templates/repo/settings/hook_discord.tmpl | 4 ++++ 6 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gogs.go b/gogs.go index a507c6906..ac0791a39 100644 --- a/gogs.go +++ b/gogs.go @@ -16,7 +16,7 @@ import ( "github.com/gogits/gogs/modules/setting" ) -const APP_VER = "0.9.163.0220" +const APP_VER = "0.9.164.0220" func init() { setting.AppVer = APP_VER diff --git a/models/webhook_discord.go b/models/webhook_discord.go index 820637fb3..aa387fe64 100644 --- a/models/webhook_discord.go +++ b/models/webhook_discord.go @@ -7,6 +7,7 @@ package models import ( "encoding/json" "fmt" + "strconv" "strings" "github.com/gogits/git-module" @@ -32,6 +33,7 @@ type DiscordEmbedObject struct { Title string `json:"title"` Description string `json:"description"` URL string `json:"url"` + Color int `json:"color"` Footer *DiscordEmbedFooterObject `json:"footer"` Author *DiscordEmbedAuthorObject `json:"author"` Fields []*DiscordEmbedFieldObject `json:"fields"` @@ -70,11 +72,13 @@ func getDiscordCreatePayload(p *api.CreatePayload, slack *SlackMeta) (*DiscordPa refLink := DiscordLinkFormatter(p.Repo.HTMLURL+"/src/"+refName, refName) content := fmt.Sprintf("Created new %s: %s/%s", p.RefType, repoLink, refLink) + color, _ := strconv.ParseInt(strings.TrimLeft(slack.Color, "#"), 16, 32) return &DiscordPayload{ Username: slack.Username, AvatarURL: slack.IconURL, Embeds: []*DiscordEmbedObject{{ Description: content, + Color: int(color), Author: &DiscordEmbedAuthorObject{ Name: p.Sender.UserName, IconURL: p.Sender.AvatarUrl, @@ -116,11 +120,13 @@ func getDiscordPushPayload(p *api.PushPayload, slack *SlackMeta) (*DiscordPayloa } } + color, _ := strconv.ParseInt(strings.TrimLeft(slack.Color, "#"), 16, 32) return &DiscordPayload{ Username: slack.Username, AvatarURL: slack.IconURL, Embeds: []*DiscordEmbedObject{{ Description: content, + Color: int(color), Author: &DiscordEmbedAuthorObject{ Name: p.Sender.UserName, IconURL: p.Sender.AvatarUrl, @@ -173,6 +179,7 @@ func getDiscordPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) ( title = "Pull request synchronized: " + title } + color, _ := strconv.ParseInt(strings.TrimLeft(slack.Color, "#"), 16, 32) return &DiscordPayload{ Username: slack.Username, AvatarURL: slack.IconURL, @@ -180,6 +187,7 @@ func getDiscordPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) ( Title: title, Description: content, URL: url, + Color: int(color), Footer: &DiscordEmbedFooterObject{ Text: p.Repository.FullName, }, diff --git a/modules/auth/repo_form.go b/modules/auth/repo_form.go index c93115308..6b4612c58 100644 --- a/modules/auth/repo_form.go +++ b/modules/auth/repo_form.go @@ -177,6 +177,7 @@ type NewDiscordHookForm struct { PayloadURL string `binding:"Required;Url"` Username string IconURL string + Color string WebhookForm } diff --git a/routers/repo/webhook.go b/routers/repo/webhook.go index 84c95b5e5..f033e41bb 100644 --- a/routers/repo/webhook.go +++ b/routers/repo/webhook.go @@ -232,6 +232,7 @@ func DiscordHooksNewPost(ctx *context.Context, form auth.NewDiscordHookForm) { meta, err := json.Marshal(&models.SlackMeta{ Username: form.Username, IconURL: form.IconURL, + Color: form.Color, }) if err != nil { ctx.Handle(500, "Marshal", err) @@ -418,6 +419,7 @@ func DiscordHooksEditPost(ctx *context.Context, form auth.NewDiscordHookForm) { meta, err := json.Marshal(&models.SlackMeta{ Username: form.Username, IconURL: form.IconURL, + Color: form.Color, }) if err != nil { ctx.Handle(500, "Marshal", err) diff --git a/templates/.VERSION b/templates/.VERSION index 69e560186..687a230f6 100644 --- a/templates/.VERSION +++ b/templates/.VERSION @@ -1 +1 @@ -0.9.163.0220 \ No newline at end of file +0.9.164.0220 \ No newline at end of file diff --git a/templates/repo/settings/hook_discord.tmpl b/templates/repo/settings/hook_discord.tmpl index 5561466f7..1da3ef2cc 100644 --- a/templates/repo/settings/hook_discord.tmpl +++ b/templates/repo/settings/hook_discord.tmpl @@ -15,6 +15,10 @@ +
+ + +
{{template "repo/settings/hook_settings" .}} {{end}}