Skip to content

Commit 701e258

Browse files
authored
fix: func invoke unmarshals json before setting it in the event (knative#2256)
Signed-off-by: Calum Murray <[email protected]>
1 parent 87a0273 commit 701e258

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

pkg/functions/invoke.go

+12-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package functions
33
import (
44
"bytes"
55
"context"
6+
"encoding/json"
67
"errors"
78
"fmt"
89
"io"
@@ -152,7 +153,17 @@ func sendEvent(ctx context.Context, route string, m InvokeMessage, t http.RoundT
152153
event.SetID(m.ID)
153154
event.SetSource(m.Source)
154155
event.SetType(m.Type)
155-
if err = event.SetData(m.ContentType, m.Data); err != nil {
156+
if m.ContentType == "application/json" {
157+
var d interface{}
158+
err = json.Unmarshal([]byte(m.Data), &d)
159+
if err != nil {
160+
return
161+
}
162+
err = event.SetData(m.ContentType, d)
163+
if err != nil {
164+
return
165+
}
166+
} else if err = event.SetData(m.ContentType, m.Data); err != nil {
156167
return
157168
}
158169

0 commit comments

Comments
 (0)