diff options
Diffstat (limited to 'internal/db/webhook_slack.go')
-rw-r--r-- | internal/db/webhook_slack.go | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/internal/db/webhook_slack.go b/internal/db/webhook_slack.go index adc75587..766f5a4e 100644 --- a/internal/db/webhook_slack.go +++ b/internal/db/webhook_slack.go @@ -9,6 +9,7 @@ import ( "strings" jsoniter "github.com/json-iterator/go" + "github.com/pkg/errors" "github.com/gogs/git-module" api "github.com/gogs/go-gogs-client" @@ -71,37 +72,37 @@ func SlackLinkFormatter(url, text string) string { } // getSlackCreatePayload composes Slack payload for create new branch or tag. -func getSlackCreatePayload(p *api.CreatePayload) (*SlackPayload, error) { +func getSlackCreatePayload(p *api.CreatePayload) *SlackPayload { refName := git.RefShortName(p.Ref) repoLink := SlackLinkFormatter(p.Repo.HTMLURL, p.Repo.Name) refLink := SlackLinkFormatter(p.Repo.HTMLURL+"/src/"+refName, refName) text := fmt.Sprintf("[%s:%s] %s created by %s", repoLink, refLink, p.RefType, p.Sender.UserName) return &SlackPayload{ Text: text, - }, nil + } } // getSlackDeletePayload composes Slack payload for delete a branch or tag. -func getSlackDeletePayload(p *api.DeletePayload) (*SlackPayload, error) { +func getSlackDeletePayload(p *api.DeletePayload) *SlackPayload { refName := git.RefShortName(p.Ref) repoLink := SlackLinkFormatter(p.Repo.HTMLURL, p.Repo.Name) text := fmt.Sprintf("[%s:%s] %s deleted by %s", repoLink, refName, p.RefType, p.Sender.UserName) return &SlackPayload{ Text: text, - }, nil + } } // getSlackForkPayload composes Slack payload for forked by a repository. -func getSlackForkPayload(p *api.ForkPayload) (*SlackPayload, error) { +func getSlackForkPayload(p *api.ForkPayload) *SlackPayload { baseLink := SlackLinkFormatter(p.Repo.HTMLURL, p.Repo.Name) forkLink := SlackLinkFormatter(p.Forkee.HTMLURL, p.Forkee.FullName) text := fmt.Sprintf("%s is forked to %s", baseLink, forkLink) return &SlackPayload{ Text: text, - }, nil + } } -func getSlackPushPayload(p *api.PushPayload, slack *SlackMeta) (*SlackPayload, error) { +func getSlackPushPayload(p *api.PushPayload, slack *SlackMeta) *SlackPayload { // n new commits var ( branchName = git.RefShortName(p.Ref) @@ -143,10 +144,10 @@ func getSlackPushPayload(p *api.PushPayload, slack *SlackMeta) (*SlackPayload, e Color: slack.Color, Text: attachmentText, }}, - }, nil + } } -func getSlackIssuesPayload(p *api.IssuesPayload, slack *SlackMeta) (*SlackPayload, error) { +func getSlackIssuesPayload(p *api.IssuesPayload, slack *SlackMeta) *SlackPayload { senderLink := SlackLinkFormatter(conf.Server.ExternalURL+p.Sender.UserName, p.Sender.UserName) titleLink := SlackLinkFormatter(fmt.Sprintf("%s/issues/%d", p.Repository.HTMLURL, p.Index), fmt.Sprintf("#%d %s", p.Index, p.Issue.Title)) @@ -189,10 +190,10 @@ func getSlackIssuesPayload(p *api.IssuesPayload, slack *SlackMeta) (*SlackPayloa Title: title, Text: attachmentText, }}, - }, nil + } } -func getSlackIssueCommentPayload(p *api.IssueCommentPayload, slack *SlackMeta) (*SlackPayload, error) { +func getSlackIssueCommentPayload(p *api.IssueCommentPayload, slack *SlackMeta) *SlackPayload { senderLink := SlackLinkFormatter(conf.Server.ExternalURL+p.Sender.UserName, p.Sender.UserName) titleLink := SlackLinkFormatter(fmt.Sprintf("%s/issues/%d#%s", p.Repository.HTMLURL, p.Issue.Index, CommentHashTag(p.Comment.ID)), fmt.Sprintf("#%d %s", p.Issue.Index, p.Issue.Title)) @@ -223,10 +224,10 @@ func getSlackIssueCommentPayload(p *api.IssueCommentPayload, slack *SlackMeta) ( Title: title, Text: attachmentText, }}, - }, nil + } } -func getSlackPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) (*SlackPayload, error) { +func getSlackPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) *SlackPayload { senderLink := SlackLinkFormatter(conf.Server.ExternalURL+p.Sender.UserName, p.Sender.UserName) titleLink := SlackLinkFormatter(fmt.Sprintf("%s/pulls/%d", p.Repository.HTMLURL, p.Index), fmt.Sprintf("#%d %s", p.Index, p.PullRequest.Title)) @@ -275,16 +276,16 @@ func getSlackPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) (*S Title: title, Text: attachmentText, }}, - }, nil + } } -func getSlackReleasePayload(p *api.ReleasePayload) (*SlackPayload, error) { +func getSlackReleasePayload(p *api.ReleasePayload) *SlackPayload { repoLink := SlackLinkFormatter(p.Repository.HTMLURL, p.Repository.Name) refLink := SlackLinkFormatter(p.Repository.HTMLURL+"/src/"+p.Release.TagName, p.Release.TagName) text := fmt.Sprintf("[%s] new release %s published by %s", repoLink, refLink, p.Sender.UserName) return &SlackPayload{ Text: text, - }, nil + } } func GetSlackPayload(p api.Payloader, event HookEventType, meta string) (payload *SlackPayload, err error) { @@ -295,24 +296,23 @@ func GetSlackPayload(p api.Payloader, event HookEventType, meta string) (payload switch event { case HOOK_EVENT_CREATE: - payload, err = getSlackCreatePayload(p.(*api.CreatePayload)) + payload = getSlackCreatePayload(p.(*api.CreatePayload)) case HOOK_EVENT_DELETE: - payload, err = getSlackDeletePayload(p.(*api.DeletePayload)) + payload = getSlackDeletePayload(p.(*api.DeletePayload)) case HOOK_EVENT_FORK: - payload, err = getSlackForkPayload(p.(*api.ForkPayload)) + payload = getSlackForkPayload(p.(*api.ForkPayload)) case HOOK_EVENT_PUSH: - payload, err = getSlackPushPayload(p.(*api.PushPayload), slack) + payload = getSlackPushPayload(p.(*api.PushPayload), slack) case HOOK_EVENT_ISSUES: - payload, err = getSlackIssuesPayload(p.(*api.IssuesPayload), slack) + payload = getSlackIssuesPayload(p.(*api.IssuesPayload), slack) case HOOK_EVENT_ISSUE_COMMENT: - payload, err = getSlackIssueCommentPayload(p.(*api.IssueCommentPayload), slack) + payload = getSlackIssueCommentPayload(p.(*api.IssueCommentPayload), slack) case HOOK_EVENT_PULL_REQUEST: - payload, err = getSlackPullRequestPayload(p.(*api.PullRequestPayload), slack) + payload = getSlackPullRequestPayload(p.(*api.PullRequestPayload), slack) case HOOK_EVENT_RELEASE: - payload, err = getSlackReleasePayload(p.(*api.ReleasePayload)) - } - if err != nil { - return nil, fmt.Errorf("event '%s': %v", event, err) + payload = getSlackReleasePayload(p.(*api.ReleasePayload)) + default: + return nil, errors.Errorf("unexpected event %q", event) } payload.Channel = slack.Channel @@ -321,6 +321,5 @@ func GetSlackPayload(p api.Payloader, event HookEventType, meta string) (payload if len(payload.Attachments) > 0 { payload.Attachments[0].Color = slack.Color } - return payload, nil } |