Skip to content

Commit 39865c0

Browse files
authored
chore: change webhook payload structure (#397)
1 parent fced7db commit 39865c0

File tree

3 files changed

+29
-19
lines changed

3 files changed

+29
-19
lines changed

api/turing/webhook/request.go

+24-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,31 @@ package webhook
22

33
import (
44
"github.com/caraml-dev/mlp/api/pkg/webhooks"
5+
"github.com/caraml-dev/turing/api/turing/models"
56
)
67

78
type Request struct {
8-
EventType webhooks.EventType `json:"event_type"`
9-
Data interface{} `json:"data"`
9+
EventType webhooks.EventType `json:"event_type"`
10+
Data map[string]interface{} `json:"data"`
11+
}
12+
13+
// Adds the eventType to the body of the webhook request so that a single webhook endpoint is able to respond
14+
// differently to different event types, especially if the same webhook endpoint is configured for multiple events,
15+
// this is because the event type does not normally get sent to the webhook endpoint.
16+
func generateBody(eventType webhooks.EventType, item interface{}) *Request {
17+
data := make(map[string]interface{})
18+
19+
switch item.(type) {
20+
case *models.EnsemblerLike, models.EnsemblerLike:
21+
data["ensembler"] = item
22+
case *models.RouterVersion:
23+
data["router_version"] = item
24+
case *models.Router:
25+
data["router"] = item
26+
}
27+
28+
return &Request{
29+
EventType: eventType,
30+
Data: data,
31+
}
1032
}

api/turing/webhook/webhook.go

+1-7
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,7 @@ func (w webhook) TriggerWebhooks(ctx context.Context, eventType webhooks.EventTy
6060
return nil
6161
}
6262

63-
// Adds the eventType to the body of the webhook request so that a single webhook endpoint is able to respond
64-
// differently to different event types, especially if the same webhook endpoint is configured for multiple events,
65-
// This is because the event type does not normally get sent to the webhook endpoint.
66-
newBody := &Request{
67-
EventType: eventType,
68-
Data: body,
69-
}
63+
newBody := generateBody(eventType, body)
7064

7165
return w.webhookManager.InvokeWebhooks(
7266
ctx,

api/turing/webhook/webhook_test.go

+4-10
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,7 @@ func Test_webhook_triggerEvent(t *testing.T) {
105105
args: args{
106106
ctx: context.TODO(),
107107
eventType: OnRouterCreated,
108-
body: routerRequest{
109-
EventType: OnRouterCreated,
110-
Router: &models.Router{},
111-
},
108+
body: &models.Router{},
112109
},
113110
mockFunc: func(args args) {
114111
mockWebhookManager.On("IsEventConfigured", args.eventType).
@@ -119,7 +116,7 @@ func Test_webhook_triggerEvent(t *testing.T) {
119116
args.eventType,
120117
&Request{
121118
EventType: args.eventType,
122-
Data: args.body,
119+
Data: map[string]interface{}{"router": args.body},
123120
},
124121
mock.Anything,
125122
mock.Anything,
@@ -134,10 +131,7 @@ func Test_webhook_triggerEvent(t *testing.T) {
134131
args: args{
135132
ctx: context.TODO(),
136133
eventType: OnRouterCreated,
137-
body: routerRequest{
138-
EventType: OnRouterCreated,
139-
Router: &models.Router{},
140-
},
134+
body: &models.Router{},
141135
},
142136
mockFunc: func(args args) {
143137
mockWebhookManager.On("IsEventConfigured", args.eventType).
@@ -148,7 +142,7 @@ func Test_webhook_triggerEvent(t *testing.T) {
148142
args.eventType,
149143
&Request{
150144
EventType: args.eventType,
151-
Data: args.body,
145+
Data: map[string]interface{}{"router": args.body},
152146
},
153147
mock.Anything,
154148
mock.Anything,

0 commit comments

Comments
 (0)