diff options
Diffstat (limited to 'model/command_response.go')
-rw-r--r-- | model/command_response.go | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/model/command_response.go b/model/command_response.go index cac7e8452..1ed5286de 100644 --- a/model/command_response.go +++ b/model/command_response.go @@ -8,6 +8,8 @@ import ( "io" "io/ioutil" "strings" + + "github.com/mattermost/mattermost-server/utils/jsonutils" ) const ( @@ -31,14 +33,14 @@ func (o *CommandResponse) ToJson() string { return string(b) } -func CommandResponseFromHTTPBody(contentType string, body io.Reader) *CommandResponse { +func CommandResponseFromHTTPBody(contentType string, body io.Reader) (*CommandResponse, error) { if strings.TrimSpace(strings.Split(contentType, ";")[0]) == "application/json" { return CommandResponseFromJson(body) } if b, err := ioutil.ReadAll(body); err == nil { - return CommandResponseFromPlainText(string(b)) + return CommandResponseFromPlainText(string(b)), nil } - return nil + return nil, nil } func CommandResponseFromPlainText(text string) *CommandResponse { @@ -47,15 +49,19 @@ func CommandResponseFromPlainText(text string) *CommandResponse { } } -func CommandResponseFromJson(data io.Reader) *CommandResponse { - decoder := json.NewDecoder(data) - var o CommandResponse +func CommandResponseFromJson(data io.Reader) (*CommandResponse, error) { + b, err := ioutil.ReadAll(data) + if err != nil { + return nil, err + } - if err := decoder.Decode(&o); err != nil { - return nil + var o CommandResponse + err = json.Unmarshal(b, &o) + if err != nil { + return nil, jsonutils.HumanizeJsonError(err, b) } o.Attachments = StringifySlackFieldValue(o.Attachments) - return &o + return &o, nil } |