| 61 | } |
| 62 | |
| 63 | func (m *Manager) getWebhookContextFromEvent(ctx context.Context, e *Event, eventType storepb.Activity_Type) (*webhook.Context, error) { |
| 64 | var webhookCtx webhook.Context |
| 65 | var mentionUsers []*store.UserMessage |
| 66 | |
| 67 | // Use command-line flag value if set, otherwise use database value |
| 68 | externalURL, err := utils.GetEffectiveExternalURL(ctx, m.store, m.profile, e.Project.Workspace) |
| 69 | if err != nil { |
| 70 | return nil, err |
| 71 | } |
| 72 | |
| 73 | level := webhook.WebhookInfo |
| 74 | title := "" |
| 75 | titleZh := "" |
| 76 | link := "" |
| 77 | description := "" |
| 78 | environment := "" |
| 79 | var actor *User |
| 80 | var issue *Issue |
| 81 | var rollout *Rollout |
| 82 | |
| 83 | switch e.Type { |
| 84 | case storepb.Activity_ISSUE_CREATED: |
| 85 | title = "Issue created" |
| 86 | titleZh = "创建工单" |
| 87 | if e.IssueCreated != nil { |
| 88 | actor = e.IssueCreated.Creator |
| 89 | issue = e.IssueCreated.Issue |
| 90 | link = fmt.Sprintf("%s/projects/%s/issues/%d", externalURL, e.Project.ResourceID, issue.UID) |
| 91 | description = fmt.Sprintf("%s created issue %s", actor.Name, issue.Title) |
| 92 | } |
| 93 | |
| 94 | case storepb.Activity_ISSUE_APPROVAL_REQUESTED: |
| 95 | level = webhook.WebhookWarn |
| 96 | title = "Approval required" |
| 97 | titleZh = "需要审批" |
| 98 | if e.ApprovalRequested != nil { |
| 99 | actor = e.ApprovalRequested.Creator |
| 100 | issue = e.ApprovalRequested.Issue |
| 101 | link = fmt.Sprintf("%s/projects/%s/issues/%d", externalURL, e.Project.ResourceID, issue.UID) |
| 102 | mentionUsers = make([]*store.UserMessage, 0, len(e.ApprovalRequested.Approvers)) |
| 103 | for _, user := range e.ApprovalRequested.Approvers { |
| 104 | mentionUsers = append(mentionUsers, &store.UserMessage{ |
| 105 | Name: user.Name, |
| 106 | Email: user.Email, |
| 107 | Phone: user.Phone, |
| 108 | Type: storepb.PrincipalType_END_USER, |
| 109 | }) |
| 110 | } |
| 111 | } |
| 112 | |
| 113 | case storepb.Activity_ISSUE_APPROVED: |
| 114 | level = webhook.WebhookSuccess |
| 115 | title = "Issue approved" |
| 116 | titleZh = "工单审批通过" |
| 117 | if e.IssueApproved != nil { |
| 118 | actor = e.IssueApproved.Approver |
| 119 | issue = e.IssueApproved.Issue |
| 120 | link = fmt.Sprintf("%s/projects/%s/issues/%d", externalURL, e.Project.ResourceID, issue.UID) |