From 4a8afebcdb8e8c88b4191d68cb1b5712d12cee9c Mon Sep 17 00:00:00 2001 From: Corey Hulen Date: Fri, 18 Aug 2017 15:58:26 -0700 Subject: Adding debugging for webhook (#7199) * Adding debugging for webhook * Fixing build error * Moving error down --- api4/webhook.go | 7 ++++++- model/incoming_webhook.go | 6 +++--- model/incoming_webhook_test.go | 8 ++++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/api4/webhook.go b/api4/webhook.go index e34cc4137..0afcc09f8 100644 --- a/api4/webhook.go +++ b/api4/webhook.go @@ -476,7 +476,12 @@ func incomingWebhook(c *Context, w http.ResponseWriter, r *http.Request) { } } - parsedRequest := model.IncomingWebhookRequestFromJson(payload) + parsedRequest, decodeError := model.IncomingWebhookRequestFromJson(payload) + + if decodeError != nil { + c.Err = decodeError + return + } err := app.HandleIncomingWebhook(id, parsedRequest) if err != nil { diff --git a/model/incoming_webhook.go b/model/incoming_webhook.go index ce755f889..e8ed6dc82 100644 --- a/model/incoming_webhook.go +++ b/model/incoming_webhook.go @@ -193,7 +193,7 @@ func decodeIncomingWebhookRequest(by []byte) (*IncomingWebhookRequest, error) { } } -func IncomingWebhookRequestFromJson(data io.Reader) *IncomingWebhookRequest { +func IncomingWebhookRequestFromJson(data io.Reader) (*IncomingWebhookRequest, *AppError) { buf := new(bytes.Buffer) buf.ReadFrom(data) by := buf.Bytes() @@ -204,12 +204,12 @@ func IncomingWebhookRequestFromJson(data io.Reader) *IncomingWebhookRequest { if err != nil { o, err = decodeIncomingWebhookRequest(escapeControlCharsFromPayload(by)) if err != nil { - return nil + return nil, NewAppError("IncomingWebhookRequestFromJson", "Unable to parse incoming data", nil, err.Error(), http.StatusBadRequest) } } o.Text = ExpandAnnouncement(o.Text) o.Attachments = ProcessSlackAttachments(o.Attachments) - return o + return o, nil } diff --git a/model/incoming_webhook_test.go b/model/incoming_webhook_test.go index 36f8ed6e6..a716432f2 100644 --- a/model/incoming_webhook_test.go +++ b/model/incoming_webhook_test.go @@ -108,7 +108,7 @@ func TestIncomingWebhookRequestFromJson_Announcements(t *testing.T) { // simple payload payload := `{"text": "` + text + `"}` data := strings.NewReader(payload) - iwr := IncomingWebhookRequestFromJson(data) + iwr, _ := IncomingWebhookRequestFromJson(data) if iwr == nil { t.Fatal("IncomingWebhookRequest should not be nil") @@ -136,7 +136,7 @@ func TestIncomingWebhookRequestFromJson_Announcements(t *testing.T) { }` data = strings.NewReader(payload) - iwr = IncomingWebhookRequestFromJson(data) + iwr, _ = IncomingWebhookRequestFromJson(data) if iwr == nil { t.Fatal("IncomingWebhookRequest should not be nil") @@ -213,7 +213,7 @@ func TestIncomingWebhookRequestFromJson(t *testing.T) { // try to create an IncomingWebhookRequest from the payload data := strings.NewReader(payload) - iwr := IncomingWebhookRequestFromJson(data) + iwr, _ := IncomingWebhookRequestFromJson(data) // After it has been decoded, the JSON string won't contain the escape char anymore expected := strings.Replace(text, `\"`, `"`, -1) @@ -233,7 +233,7 @@ func TestIncomingWebhookRequestFromJson(t *testing.T) { func TestIncomingWebhookNullArrayItems(t *testing.T) { payload := `{"attachments":[{"fields":[{"title":"foo","value":"bar","short":true}, null]}, null]}` - iwr := IncomingWebhookRequestFromJson(strings.NewReader(payload)) + iwr, _ := IncomingWebhookRequestFromJson(strings.NewReader(payload)) if iwr == nil { t.Fatal("IncomingWebhookRequest should not be nil") } -- cgit v1.2.3-1-g7c22