diff --git a/model/command_response.go b/model/command_response.go index 0b80b297bd..d17bd00e35 100644 --- a/model/command_response.go +++ b/model/command_response.go @@ -7,6 +7,7 @@ import ( "encoding/json" "io" "io/ioutil" + "strings" ) const ( @@ -33,7 +34,7 @@ func (o *CommandResponse) ToJson() string { } func CommandResponseFromHTTPBody(contentType string, body io.Reader) *CommandResponse { - if contentType == "application/json" { + if strings.TrimSpace(strings.Split(contentType, ";")[0]) == "application/json" { return CommandResponseFromJson(body) } if b, err := ioutil.ReadAll(body); err == nil { diff --git a/model/command_response_test.go b/model/command_response_test.go index 19be796b86..dde8d032b2 100644 --- a/model/command_response_test.go +++ b/model/command_response_test.go @@ -27,6 +27,7 @@ func TestCommandResponseFromHTTPBody(t *testing.T) { {"", "foo", "foo"}, {"text/plain", "foo", "foo"}, {"application/json", `{"text": "foo"}`, "foo"}, + {"application/json; charset=utf-8", `{"text": "foo"}`, "foo"}, } { response := CommandResponseFromHTTPBody(test.ContentType, strings.NewReader(test.Body)) if response.Text != test.ExpectedText {