|
|
@ -16,6 +16,7 @@ import ( |
|
|
|
"code.gitea.io/gitea/modules/setting" |
|
|
|
"code.gitea.io/gitea/modules/setting" |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// SlackMeta contains the slack metdata
|
|
|
|
type SlackMeta struct { |
|
|
|
type SlackMeta struct { |
|
|
|
Channel string `json:"channel"` |
|
|
|
Channel string `json:"channel"` |
|
|
|
Username string `json:"username"` |
|
|
|
Username string `json:"username"` |
|
|
@ -23,6 +24,7 @@ type SlackMeta struct { |
|
|
|
Color string `json:"color"` |
|
|
|
Color string `json:"color"` |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// SlackPayload contains the information about the slack channel
|
|
|
|
type SlackPayload struct { |
|
|
|
type SlackPayload struct { |
|
|
|
Channel string `json:"channel"` |
|
|
|
Channel string `json:"channel"` |
|
|
|
Text string `json:"text"` |
|
|
|
Text string `json:"text"` |
|
|
@ -33,6 +35,7 @@ type SlackPayload struct { |
|
|
|
Attachments []SlackAttachment `json:"attachments"` |
|
|
|
Attachments []SlackAttachment `json:"attachments"` |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// SlackAttachment contains the slack message
|
|
|
|
type SlackAttachment struct { |
|
|
|
type SlackAttachment struct { |
|
|
|
Fallback string `json:"fallback"` |
|
|
|
Fallback string `json:"fallback"` |
|
|
|
Color string `json:"color"` |
|
|
|
Color string `json:"color"` |
|
|
@ -40,8 +43,10 @@ type SlackAttachment struct { |
|
|
|
Text string `json:"text"` |
|
|
|
Text string `json:"text"` |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// SetSecret sets the slack secret
|
|
|
|
func (p *SlackPayload) SetSecret(_ string) {} |
|
|
|
func (p *SlackPayload) SetSecret(_ string) {} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// JSONPayload Marshals the SlackPayload to json
|
|
|
|
func (p *SlackPayload) JSONPayload() ([]byte, error) { |
|
|
|
func (p *SlackPayload) JSONPayload() ([]byte, error) { |
|
|
|
data, err := json.MarshalIndent(p, "", " ") |
|
|
|
data, err := json.MarshalIndent(p, "", " ") |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
@ -50,6 +55,7 @@ func (p *SlackPayload) JSONPayload() ([]byte, error) { |
|
|
|
return data, nil |
|
|
|
return data, nil |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// SlackTextFormatter replaces &, <, > with HTML characters
|
|
|
|
// see: https://api.slack.com/docs/formatting
|
|
|
|
// see: https://api.slack.com/docs/formatting
|
|
|
|
func SlackTextFormatter(s string) string { |
|
|
|
func SlackTextFormatter(s string) string { |
|
|
|
// replace & < >
|
|
|
|
// replace & < >
|
|
|
@ -59,6 +65,7 @@ func SlackTextFormatter(s string) string { |
|
|
|
return s |
|
|
|
return s |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// SlackShortTextFormatter replaces &, <, > with HTML characters
|
|
|
|
func SlackShortTextFormatter(s string) string { |
|
|
|
func SlackShortTextFormatter(s string) string { |
|
|
|
s = strings.Split(s, "\n")[0] |
|
|
|
s = strings.Split(s, "\n")[0] |
|
|
|
// replace & < >
|
|
|
|
// replace & < >
|
|
|
@ -68,6 +75,7 @@ func SlackShortTextFormatter(s string) string { |
|
|
|
return s |
|
|
|
return s |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// SlackLinkFormatter creates a link compatablie with slack
|
|
|
|
func SlackLinkFormatter(url string, text string) string { |
|
|
|
func SlackLinkFormatter(url string, text string) string { |
|
|
|
return fmt.Sprintf("<%s|%s>", url, SlackTextFormatter(text)) |
|
|
|
return fmt.Sprintf("<%s|%s>", url, SlackTextFormatter(text)) |
|
|
|
} |
|
|
|
} |
|
|
@ -181,6 +189,7 @@ func getSlackPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) (*S |
|
|
|
}, nil |
|
|
|
}, nil |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// GetSlackPayload converts a slack webhook into a SlackPayload
|
|
|
|
func GetSlackPayload(p api.Payloader, event HookEventType, meta string) (*SlackPayload, error) { |
|
|
|
func GetSlackPayload(p api.Payloader, event HookEventType, meta string) (*SlackPayload, error) { |
|
|
|
s := new(SlackPayload) |
|
|
|
s := new(SlackPayload) |
|
|
|
|
|
|
|
|
|
|
|