mirror of https://github.com/knative/func.git
refactor data member of the InvokeMessage to be []byte (#2733)
Signed-off-by: KapilSareen <kapilsareen584@gmail.com>
This commit is contained in:
parent
51a14ccf23
commit
4ade4ab3d9
|
@ -172,7 +172,7 @@ func runInvoke(cmd *cobra.Command, _ []string, newClient ClientFactory) (err err
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
m.Data = string(content)
|
||||
m.Data = content
|
||||
}
|
||||
|
||||
// Invoke
|
||||
|
@ -217,7 +217,7 @@ type invokeConfig struct {
|
|||
ID string
|
||||
Source string
|
||||
Type string
|
||||
Data string
|
||||
Data []byte
|
||||
ContentType string
|
||||
File string
|
||||
Confirm bool
|
||||
|
@ -233,7 +233,7 @@ func newInvokeConfig() (cfg invokeConfig, err error) {
|
|||
ID: viper.GetString("id"),
|
||||
Source: viper.GetString("source"),
|
||||
Type: viper.GetString("type"),
|
||||
Data: viper.GetString("data"),
|
||||
Data: []byte(viper.GetString("data")),
|
||||
ContentType: viper.GetString("content-type"),
|
||||
File: viper.GetString("file"),
|
||||
Confirm: viper.GetBool("confirm"),
|
||||
|
@ -247,7 +247,7 @@ func newInvokeConfig() (cfg invokeConfig, err error) {
|
|||
if err != nil {
|
||||
return cfg, err
|
||||
}
|
||||
cfg.Data = string(b)
|
||||
cfg.Data = b
|
||||
}
|
||||
|
||||
// if not in confirm/prompting mode, the cfg structure is complete.
|
||||
|
@ -368,7 +368,7 @@ func (c invokeConfig) prompt() (invokeConfig, error) {
|
|||
Name: "Data",
|
||||
Prompt: &survey.Input{
|
||||
Message: "Data Content",
|
||||
Default: c.Data,
|
||||
Default: string(c.Data),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -389,7 +389,8 @@ func (c invokeConfig) prompt() (invokeConfig, error) {
|
|||
Message: contentTypeMessage,
|
||||
Default: c.ContentType,
|
||||
},
|
||||
}}
|
||||
},
|
||||
}
|
||||
if err := survey.Ask(qs, &c); err != nil {
|
||||
return c, err
|
||||
}
|
||||
|
@ -401,7 +402,8 @@ func (c invokeConfig) prompt() (invokeConfig, error) {
|
|||
Message: "Allow insecure server connections when using SSL",
|
||||
Default: c.Insecure,
|
||||
},
|
||||
}}
|
||||
},
|
||||
}
|
||||
if err := survey.Ask(qs, &c); err != nil {
|
||||
return c, err
|
||||
}
|
||||
|
|
|
@ -1710,7 +1710,7 @@ func TestClient_Invoke_HTTP(t *testing.T) {
|
|||
dataAsStr := string(data)
|
||||
|
||||
// Verify the body is correct
|
||||
if dataAsStr != message.Data {
|
||||
if dataAsStr != string(message.Data) {
|
||||
t.Errorf("expected message data %q, got %q", message.Data, dataAsStr)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ package functions
|
|||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
|
@ -30,8 +29,8 @@ type InvokeMessage struct {
|
|||
Source string
|
||||
Type string
|
||||
ContentType string
|
||||
Data string
|
||||
Format string //optional override for function-defined message format
|
||||
Data []byte
|
||||
Format string // optional override for function-defined message format
|
||||
}
|
||||
|
||||
// NewInvokeMessage creates a new InvokeMessage with fields populated
|
||||
|
@ -41,7 +40,7 @@ func NewInvokeMessage() InvokeMessage {
|
|||
Source: DefaultInvokeSource,
|
||||
Type: DefaultInvokeType,
|
||||
ContentType: DefaultInvokeContentType,
|
||||
Data: DefaultInvokeData,
|
||||
Data: []byte(DefaultInvokeData),
|
||||
// Format override not set by default: value from function being preferred.
|
||||
}
|
||||
}
|
||||
|
@ -50,7 +49,6 @@ func NewInvokeMessage() InvokeMessage {
|
|||
// invocation message. Returned is metadata (such as HTTP headers or
|
||||
// CloudEvent fields) and a stringified version of the payload.
|
||||
func invoke(ctx context.Context, c *Client, f Function, target string, m InvokeMessage, verbose bool) (metadata map[string][]string, body string, err error) {
|
||||
|
||||
// Get the first available route from 'local', 'remote', a named environment
|
||||
// or treat target
|
||||
route, err := invocationRoute(ctx, c, f, target) // choose instance to invoke
|
||||
|
@ -153,20 +151,10 @@ func sendEvent(ctx context.Context, route string, m InvokeMessage, t http.RoundT
|
|||
event.SetID(m.ID)
|
||||
event.SetSource(m.Source)
|
||||
event.SetType(m.Type)
|
||||
if m.ContentType == "application/json" {
|
||||
var d interface{}
|
||||
err = json.Unmarshal([]byte(m.Data), &d)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = event.SetData(m.ContentType, d)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else if err = event.SetData(m.ContentType, m.Data); err != nil {
|
||||
return
|
||||
err = event.SetData(m.ContentType, (m.Data))
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("cannot set data: %w", err)
|
||||
}
|
||||
|
||||
c, err := cloudevents.NewClientHTTP(
|
||||
cloudevents.WithTarget(route),
|
||||
cloudevents.WithRoundTripper(t))
|
||||
|
@ -200,7 +188,7 @@ func sendPost(ctx context.Context, route string, m InvokeMessage, t http.RoundTr
|
|||
"Source": {m.Source},
|
||||
"Type": {m.Type},
|
||||
"ContentType": {m.ContentType},
|
||||
"Data": {m.Data},
|
||||
"Data": {string(m.Data)},
|
||||
}
|
||||
if verbose {
|
||||
fmt.Println("Sending values")
|
||||
|
@ -209,7 +197,7 @@ func sendPost(ctx context.Context, route string, m InvokeMessage, t http.RoundTr
|
|||
}
|
||||
}
|
||||
|
||||
req, err := http.NewRequestWithContext(ctx, "POST", route, bytes.NewBufferString(m.Data))
|
||||
req, err := http.NewRequestWithContext(ctx, "POST", route, bytes.NewReader(m.Data))
|
||||
if err != nil {
|
||||
return nil, "", fmt.Errorf("failure to create request: %w", err)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue