Adding debugging for webhook (#7199)
* Adding debugging for webhook * Fixing build error * Moving error down
Этот коммит содержится в:
@@ -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)
|
err := app.HandleIncomingWebhook(id, parsedRequest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -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 := new(bytes.Buffer)
|
||||||
buf.ReadFrom(data)
|
buf.ReadFrom(data)
|
||||||
by := buf.Bytes()
|
by := buf.Bytes()
|
||||||
@@ -204,12 +204,12 @@ func IncomingWebhookRequestFromJson(data io.Reader) *IncomingWebhookRequest {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
o, err = decodeIncomingWebhookRequest(escapeControlCharsFromPayload(by))
|
o, err = decodeIncomingWebhookRequest(escapeControlCharsFromPayload(by))
|
||||||
if err != nil {
|
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.Text = ExpandAnnouncement(o.Text)
|
||||||
o.Attachments = ProcessSlackAttachments(o.Attachments)
|
o.Attachments = ProcessSlackAttachments(o.Attachments)
|
||||||
|
|
||||||
return o
|
return o, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ func TestIncomingWebhookRequestFromJson_Announcements(t *testing.T) {
|
|||||||
// simple payload
|
// simple payload
|
||||||
payload := `{"text": "` + text + `"}`
|
payload := `{"text": "` + text + `"}`
|
||||||
data := strings.NewReader(payload)
|
data := strings.NewReader(payload)
|
||||||
iwr := IncomingWebhookRequestFromJson(data)
|
iwr, _ := IncomingWebhookRequestFromJson(data)
|
||||||
|
|
||||||
if iwr == nil {
|
if iwr == nil {
|
||||||
t.Fatal("IncomingWebhookRequest should not be nil")
|
t.Fatal("IncomingWebhookRequest should not be nil")
|
||||||
@@ -136,7 +136,7 @@ func TestIncomingWebhookRequestFromJson_Announcements(t *testing.T) {
|
|||||||
}`
|
}`
|
||||||
|
|
||||||
data = strings.NewReader(payload)
|
data = strings.NewReader(payload)
|
||||||
iwr = IncomingWebhookRequestFromJson(data)
|
iwr, _ = IncomingWebhookRequestFromJson(data)
|
||||||
|
|
||||||
if iwr == nil {
|
if iwr == nil {
|
||||||
t.Fatal("IncomingWebhookRequest should not be 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
|
// try to create an IncomingWebhookRequest from the payload
|
||||||
data := strings.NewReader(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
|
// After it has been decoded, the JSON string won't contain the escape char anymore
|
||||||
expected := strings.Replace(text, `\"`, `"`, -1)
|
expected := strings.Replace(text, `\"`, `"`, -1)
|
||||||
@@ -233,7 +233,7 @@ func TestIncomingWebhookRequestFromJson(t *testing.T) {
|
|||||||
|
|
||||||
func TestIncomingWebhookNullArrayItems(t *testing.T) {
|
func TestIncomingWebhookNullArrayItems(t *testing.T) {
|
||||||
payload := `{"attachments":[{"fields":[{"title":"foo","value":"bar","short":true}, null]}, null]}`
|
payload := `{"attachments":[{"fields":[{"title":"foo","value":"bar","short":true}, null]}, null]}`
|
||||||
iwr := IncomingWebhookRequestFromJson(strings.NewReader(payload))
|
iwr, _ := IncomingWebhookRequestFromJson(strings.NewReader(payload))
|
||||||
if iwr == nil {
|
if iwr == nil {
|
||||||
t.Fatal("IncomingWebhookRequest should not be nil")
|
t.Fatal("IncomingWebhookRequest should not be nil")
|
||||||
}
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user