summaryrefslogtreecommitdiffstats
path: root/api/webhook.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/webhook.go')
-rw-r--r--api/webhook.go26
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