diff options
Diffstat (limited to 'api/webhook.go')
-rw-r--r-- | api/webhook.go | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/api/webhook.go b/api/webhook.go index 676fd2cbc..6297133da 100644 --- a/api/webhook.go +++ b/api/webhook.go @@ -4,6 +4,7 @@ package api import ( + "io" "net/http" "strings" @@ -373,14 +374,33 @@ func incomingWebhook(c *Context, w http.ResponseWriter, r *http.Request) { r.ParseForm() - var parsedRequest *model.IncomingWebhookRequest + var payload io.Reader contentType := r.Header.Get("Content-Type") if strings.Split(contentType, "; ")[0] == "application/x-www-form-urlencoded" { - parsedRequest = model.IncomingWebhookRequestFromJson(strings.NewReader(r.FormValue("payload"))) + payload = strings.NewReader(r.FormValue("payload")) } else { - parsedRequest = model.IncomingWebhookRequestFromJson(r.Body) + payload = r.Body + } + + if utils.Cfg.LogSettings.EnableWebhookDebugging { + var err error + payload, err = utils.DebugReader( + payload, + utils.T("api.webhook.incoming.debug"), + ) + if err != nil { + c.Err = model.NewLocAppError( + "incomingWebhook", + "api.webhook.incoming.debug.error", + nil, + err.Error(), + ) + return + } } + parsedRequest := model.IncomingWebhookRequestFromJson(payload) + if parsedRequest == nil { c.Err = model.NewLocAppError("incomingWebhook", "web.incoming_webhook.parse.app_error", nil, "") return |