Some fixes to the event_v01.go file. (#254)

* Some fixes to the event_v01.go file.

Mostly change to the encodeKey to not use pointer to the map.
Some minor readability improvements.

* Fix the comment wording.
This commit is contained in:
Victor Agababov 2019-01-30 10:40:37 -08:00 committed by Knative Prow Robot
parent 298debc821
commit da039ff041
1 changed files with 20 additions and 23 deletions

View File

@ -106,13 +106,11 @@ func (ec *V01EventContext) FromHeaders(in http.Header) error {
}
return nil
}
err := anyError(
if err := anyError(
missingField("CloudEventsVersion"),
missingField("EventID"),
missingField("EventType"),
missingField("Source"),
)
if err != nil {
missingField("Source")); err != nil {
return err
}
data := V01EventContext{
@ -126,6 +124,7 @@ func (ec *V01EventContext) FromHeaders(in http.Header) error {
Extensions: make(map[string]interface{}),
}
if timeStr := in.Get("CE-EventTime"); timeStr != "" {
var err error
if data.EventTime, err = time.Parse(time.RFC3339Nano, timeStr); err != nil {
return err
}
@ -134,10 +133,10 @@ func (ec *V01EventContext) FromHeaders(in http.Header) error {
if strings.EqualFold(k[:len("CE-X-")], "CE-X-") {
key := k[len("CE-X-"):]
var tmp interface{}
if err = json.Unmarshal([]byte(v[0]), &tmp); err == nil {
if err := json.Unmarshal([]byte(v[0]), &tmp); err == nil {
data.Extensions[key] = tmp
} else {
// If we can't unmarshall the data, treat it as a string
// If we can't unmarshal the data, treat it as a string.
data.Extensions[key] = v[0]
}
}
@ -150,15 +149,15 @@ func (ec *V01EventContext) FromHeaders(in http.Header) error {
func (ec V01EventContext) AsJSON() (map[string]json.RawMessage, error) {
ret := make(map[string]json.RawMessage)
err := anyError(
encodeKey(&ret, "cloudEventsVersion", ec.CloudEventsVersion),
encodeKey(&ret, "eventID", ec.EventID),
encodeKey(&ret, "eventTime", ec.EventTime),
encodeKey(&ret, "eventType", ec.EventType),
encodeKey(&ret, "eventTypeVersion", ec.EventTypeVersion),
encodeKey(&ret, "schemaURL", ec.SchemaURL),
encodeKey(&ret, "contentType", ec.ContentType),
encodeKey(&ret, "source", ec.Source),
encodeKey(&ret, "extensions", ec.Extensions))
encodeKey(ret, "cloudEventsVersion", ec.CloudEventsVersion),
encodeKey(ret, "eventID", ec.EventID),
encodeKey(ret, "eventTime", ec.EventTime),
encodeKey(ret, "eventType", ec.EventType),
encodeKey(ret, "eventTypeVersion", ec.EventTypeVersion),
encodeKey(ret, "schemaURL", ec.SchemaURL),
encodeKey(ret, "contentType", ec.ContentType),
encodeKey(ret, "source", ec.Source),
encodeKey(ret, "extensions", ec.Extensions))
return ret, err
}
@ -176,8 +175,7 @@ func (ec *V01EventContext) FromJSON(in map[string]json.RawMessage) error {
Source: extractKey(in, "source"),
}
var err error
timeStr := extractKey(in, "eventTime")
if timeStr != "" {
if timeStr := extractKey(in, "eventTime"); timeStr != "" {
if data.EventTime, err = time.Parse(time.RFC3339Nano, timeStr); err != nil {
return err
}
@ -188,20 +186,19 @@ func (ec *V01EventContext) FromJSON(in map[string]json.RawMessage) error {
if len(in["extensions"]) == 0 {
in["extensions"] = []byte("{}")
}
err = json.Unmarshal(in["extensions"], &data.Extensions)
if err != nil {
if err = json.Unmarshal(in["extensions"], &data.Extensions); err != nil {
return err
}
*ec = data
return nil
}
func encodeKey(out *map[string]json.RawMessage, key string, value interface{}) (err error) {
if s, ok := value.(string); s == "" && ok {
// Skip empty strings
func encodeKey(out map[string]json.RawMessage, key string, value interface{}) (err error) {
if s, ok := value.(string); ok && s == "" {
// Skip empty strings.
return nil
}
(*out)[key], err = json.Marshal(value)
out[key], err = json.Marshal(value)
return
}