MCPcopy Index your code
hub / github.com/bytebase/bytebase / getWebhookContextFromEvent

Method getWebhookContextFromEvent

backend/component/webhook/manager.go:63–240  ·  view source on GitHub ↗
(ctx context.Context, e *Event, eventType storepb.Activity_Type)

Source from the content-addressed store, hash-verified

61}
62
63func (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)

Calls 6

GetEffectiveExternalURLFunction · 0.92
FormatProjectFunction · 0.92
BBErrorFunction · 0.92
ErrorfMethod · 0.80
GetAccountByEmailMethod · 0.80
StringMethod · 0.65