mirror of https://github.com/gogs/gogs.git
webhook: support color for Discord
parent
c5b85f2733
commit
8216360da8
2
gogs.go
2
gogs.go
|
@ -16,7 +16,7 @@ import (
|
||||||
"github.com/gogits/gogs/modules/setting"
|
"github.com/gogits/gogs/modules/setting"
|
||||||
)
|
)
|
||||||
|
|
||||||
const APP_VER = "0.9.163.0220"
|
const APP_VER = "0.9.164.0220"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
setting.AppVer = APP_VER
|
setting.AppVer = APP_VER
|
||||||
|
|
|
@ -7,6 +7,7 @@ package models
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/gogits/git-module"
|
"github.com/gogits/git-module"
|
||||||
|
@ -32,6 +33,7 @@ type DiscordEmbedObject struct {
|
||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
|
Color int `json:"color"`
|
||||||
Footer *DiscordEmbedFooterObject `json:"footer"`
|
Footer *DiscordEmbedFooterObject `json:"footer"`
|
||||||
Author *DiscordEmbedAuthorObject `json:"author"`
|
Author *DiscordEmbedAuthorObject `json:"author"`
|
||||||
Fields []*DiscordEmbedFieldObject `json:"fields"`
|
Fields []*DiscordEmbedFieldObject `json:"fields"`
|
||||||
|
@ -70,11 +72,13 @@ func getDiscordCreatePayload(p *api.CreatePayload, slack *SlackMeta) (*DiscordPa
|
||||||
refLink := DiscordLinkFormatter(p.Repo.HTMLURL+"/src/"+refName, refName)
|
refLink := DiscordLinkFormatter(p.Repo.HTMLURL+"/src/"+refName, refName)
|
||||||
content := fmt.Sprintf("Created new %s: %s/%s", p.RefType, repoLink, refLink)
|
content := fmt.Sprintf("Created new %s: %s/%s", p.RefType, repoLink, refLink)
|
||||||
|
|
||||||
|
color, _ := strconv.ParseInt(strings.TrimLeft(slack.Color, "#"), 16, 32)
|
||||||
return &DiscordPayload{
|
return &DiscordPayload{
|
||||||
Username: slack.Username,
|
Username: slack.Username,
|
||||||
AvatarURL: slack.IconURL,
|
AvatarURL: slack.IconURL,
|
||||||
Embeds: []*DiscordEmbedObject{{
|
Embeds: []*DiscordEmbedObject{{
|
||||||
Description: content,
|
Description: content,
|
||||||
|
Color: int(color),
|
||||||
Author: &DiscordEmbedAuthorObject{
|
Author: &DiscordEmbedAuthorObject{
|
||||||
Name: p.Sender.UserName,
|
Name: p.Sender.UserName,
|
||||||
IconURL: p.Sender.AvatarUrl,
|
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{
|
return &DiscordPayload{
|
||||||
Username: slack.Username,
|
Username: slack.Username,
|
||||||
AvatarURL: slack.IconURL,
|
AvatarURL: slack.IconURL,
|
||||||
Embeds: []*DiscordEmbedObject{{
|
Embeds: []*DiscordEmbedObject{{
|
||||||
Description: content,
|
Description: content,
|
||||||
|
Color: int(color),
|
||||||
Author: &DiscordEmbedAuthorObject{
|
Author: &DiscordEmbedAuthorObject{
|
||||||
Name: p.Sender.UserName,
|
Name: p.Sender.UserName,
|
||||||
IconURL: p.Sender.AvatarUrl,
|
IconURL: p.Sender.AvatarUrl,
|
||||||
|
@ -173,6 +179,7 @@ func getDiscordPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) (
|
||||||
title = "Pull request synchronized: " + title
|
title = "Pull request synchronized: " + title
|
||||||
}
|
}
|
||||||
|
|
||||||
|
color, _ := strconv.ParseInt(strings.TrimLeft(slack.Color, "#"), 16, 32)
|
||||||
return &DiscordPayload{
|
return &DiscordPayload{
|
||||||
Username: slack.Username,
|
Username: slack.Username,
|
||||||
AvatarURL: slack.IconURL,
|
AvatarURL: slack.IconURL,
|
||||||
|
@ -180,6 +187,7 @@ func getDiscordPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) (
|
||||||
Title: title,
|
Title: title,
|
||||||
Description: content,
|
Description: content,
|
||||||
URL: url,
|
URL: url,
|
||||||
|
Color: int(color),
|
||||||
Footer: &DiscordEmbedFooterObject{
|
Footer: &DiscordEmbedFooterObject{
|
||||||
Text: p.Repository.FullName,
|
Text: p.Repository.FullName,
|
||||||
},
|
},
|
||||||
|
|
|
@ -177,6 +177,7 @@ type NewDiscordHookForm struct {
|
||||||
PayloadURL string `binding:"Required;Url"`
|
PayloadURL string `binding:"Required;Url"`
|
||||||
Username string
|
Username string
|
||||||
IconURL string
|
IconURL string
|
||||||
|
Color string
|
||||||
WebhookForm
|
WebhookForm
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -232,6 +232,7 @@ func DiscordHooksNewPost(ctx *context.Context, form auth.NewDiscordHookForm) {
|
||||||
meta, err := json.Marshal(&models.SlackMeta{
|
meta, err := json.Marshal(&models.SlackMeta{
|
||||||
Username: form.Username,
|
Username: form.Username,
|
||||||
IconURL: form.IconURL,
|
IconURL: form.IconURL,
|
||||||
|
Color: form.Color,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Handle(500, "Marshal", err)
|
ctx.Handle(500, "Marshal", err)
|
||||||
|
@ -418,6 +419,7 @@ func DiscordHooksEditPost(ctx *context.Context, form auth.NewDiscordHookForm) {
|
||||||
meta, err := json.Marshal(&models.SlackMeta{
|
meta, err := json.Marshal(&models.SlackMeta{
|
||||||
Username: form.Username,
|
Username: form.Username,
|
||||||
IconURL: form.IconURL,
|
IconURL: form.IconURL,
|
||||||
|
Color: form.Color,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Handle(500, "Marshal", err)
|
ctx.Handle(500, "Marshal", err)
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
0.9.163.0220
|
0.9.164.0220
|
|
@ -15,6 +15,10 @@
|
||||||
<label for="icon_url">{{.i18n.Tr "repo.settings.slack_icon_url"}}</label>
|
<label for="icon_url">{{.i18n.Tr "repo.settings.slack_icon_url"}}</label>
|
||||||
<input id="icon_url" name="icon_url" value="{{.SlackHook.IconURL}}" placeholder="e.g. https://example.com/img/favicon.png">
|
<input id="icon_url" name="icon_url" value="{{.SlackHook.IconURL}}" placeholder="e.g. https://example.com/img/favicon.png">
|
||||||
</div>
|
</div>
|
||||||
|
<div class="field">
|
||||||
|
<label for="color">{{.i18n.Tr "repo.settings.slack_color"}}</label>
|
||||||
|
<input id="color" name="color" value="{{.SlackHook.Color}}" placeholder="e.g. #dd4b39">
|
||||||
|
</div>
|
||||||
{{template "repo/settings/hook_settings" .}}
|
{{template "repo/settings/hook_settings" .}}
|
||||||
</form>
|
</form>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
Loading…
Reference in New Issue