summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris <ccbrown112@gmail.com>2017-09-11 10:09:24 -0500
committerGitHub <noreply@github.com>2017-09-11 10:09:24 -0500
commit674a606bd00b276d0a05b3b29a3d5f5e5e7f8206 (patch)
tree20b90abc4020c268edf407df80a6a3c9a70507b3
parent402491b7e52c4d836c1274976cdb387852cfd17b (diff)
downloadchat-674a606bd00b276d0a05b3b29a3d5f5e5e7f8206.tar.gz
chat-674a606bd00b276d0a05b3b29a3d5f5e5e7f8206.tar.bz2
chat-674a606bd00b276d0a05b3b29a3d5f5e5e7f8206.zip
more robust command response content-type checking (#7412)
-rw-r--r--model/command_response.go3
-rw-r--r--model/command_response_test.go1
2 files changed, 3 insertions, 1 deletions
diff --git a/model/command_response.go b/model/command_response.go
index 0b80b297b..d17bd00e3 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 19be796b8..dde8d032b 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 {