Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions cmd/invoke.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -217,7 +217,7 @@ type invokeConfig struct {
ID string
Source string
Type string
Data string
Data []byte
ContentType string
File string
Confirm bool
Expand All @@ -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"),
Expand All @@ -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.
Expand Down Expand Up @@ -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),
},
},
}
Expand All @@ -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
}
Expand All @@ -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
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/functions/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
28 changes: 8 additions & 20 deletions pkg/functions/invoke.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package functions
import (
"bytes"
"context"
"encoding/json"
"errors"
"fmt"
"io"
Expand All @@ -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
Expand All @@ -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.
}
}
Expand All @@ -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
Expand Down Expand Up @@ -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))
Expand Down Expand Up @@ -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")
Expand All @@ -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)
}
Expand Down
Loading