(p api.Payloader, event HookEventType, meta string)
| 285 | } |
| 286 | |
| 287 | func GetSlackPayload(p api.Payloader, event HookEventType, meta string) (payload *SlackPayload, err error) { |
| 288 | slack := &SlackMeta{} |
| 289 | if err := jsoniter.Unmarshal([]byte(meta), &slack); err != nil { |
| 290 | return nil, errors.Newf("unmarshal: %v", err) |
| 291 | } |
| 292 | |
| 293 | switch event { |
| 294 | case HookEventTypeCreate: |
| 295 | payload = getSlackCreatePayload(p.(*api.CreatePayload)) |
| 296 | case HookEventTypeDelete: |
| 297 | payload = getSlackDeletePayload(p.(*api.DeletePayload)) |
| 298 | case HookEventTypeFork: |
| 299 | payload = getSlackForkPayload(p.(*api.ForkPayload)) |
| 300 | case HookEventTypePush: |
| 301 | payload = getSlackPushPayload(p.(*api.PushPayload), slack) |
| 302 | case HookEventTypeIssues: |
| 303 | payload = getSlackIssuesPayload(p.(*api.IssuesPayload), slack) |
| 304 | case HookEventTypeIssueComment: |
| 305 | payload = getSlackIssueCommentPayload(p.(*api.IssueCommentPayload), slack) |
| 306 | case HookEventTypePullRequest: |
| 307 | payload = getSlackPullRequestPayload(p.(*api.PullRequestPayload), slack) |
| 308 | case HookEventTypeRelease: |
| 309 | payload = getSlackReleasePayload(p.(*api.ReleasePayload)) |
| 310 | default: |
| 311 | return nil, errors.Errorf("unexpected event %q", event) |
| 312 | } |
| 313 | |
| 314 | payload.Channel = slack.Channel |
| 315 | payload.Username = slack.Username |
| 316 | payload.IconURL = slack.IconURL |
| 317 | if len(payload.Attachments) > 0 { |
| 318 | payload.Attachments[0].Color = slack.Color |
| 319 | } |
| 320 | return payload, nil |
| 321 | } |
no test coverage detected