(ctx context.Context, e *Event)
| 32 | } |
| 33 | |
| 34 | func (m *Manager) CreateEvent(ctx context.Context, e *Event) { |
| 35 | webhookList, err := m.store.ListProjectWebhooks(ctx, &store.FindProjectWebhookMessage{ |
| 36 | ProjectID: &e.Project.ResourceID, |
| 37 | EventType: &e.Type, |
| 38 | }) |
| 39 | if err != nil { |
| 40 | slog.Warn("failed to find project webhook", |
| 41 | slog.String("project", e.Project.ResourceID), |
| 42 | slog.String("event_type", e.Type.String()), |
| 43 | log.BBError(err)) |
| 44 | return |
| 45 | } |
| 46 | |
| 47 | if len(webhookList) == 0 { |
| 48 | return |
| 49 | } |
| 50 | |
| 51 | webhookCtx, err := m.getWebhookContextFromEvent(ctx, e, e.Type) |
| 52 | if err != nil { |
| 53 | slog.Warn("failed to get webhook context", |
| 54 | slog.String("project", e.Project.ResourceID), |
| 55 | slog.String("event_type", e.Type.String()), |
| 56 | log.BBError(err)) |
| 57 | return |
| 58 | } |
| 59 | // Call external webhook endpoint in Go routine to avoid blocking web serving thread. |
| 60 | go m.postWebhookList(ctx, webhookCtx, webhookList, e.Project.Workspace) |
| 61 | } |
| 62 | |
| 63 | func (m *Manager) getWebhookContextFromEvent(ctx context.Context, e *Event, eventType storepb.Activity_Type) (*webhook.Context, error) { |
| 64 | var webhookCtx webhook.Context |
no test coverage detected