diff options
Diffstat (limited to 'web/web.go')
-rw-r--r-- | web/web.go | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/web/web.go b/web/web.go index 51f6664b6..1cae604ae 100644 --- a/web/web.go +++ b/web/web.go @@ -983,6 +983,11 @@ func incomingWebhook(c *api.Context, w http.ResponseWriter, r *http.Request) { parsedRequest = model.IncomingWebhookRequestFromJson(strings.NewReader(r.FormValue("payload"))) } + if parsedRequest == nil { + c.Err = model.NewAppError("incomingWebhook", "Unable to parse incoming data", "") + return + } + text := parsedRequest.Text if len(text) == 0 { c.Err = model.NewAppError("incomingWebhook", "No text specified", "") @@ -990,6 +995,16 @@ func incomingWebhook(c *api.Context, w http.ResponseWriter, r *http.Request) { } channelName := parsedRequest.ChannelName + webhookType := parsedRequest.Type + + //attachments is in here for slack compatibility + if parsedRequest.Attachments != nil { + if len(parsedRequest.Props) == 0 { + parsedRequest.Props = make(model.StringInterface) + } + parsedRequest.Props["attachments"] = parsedRequest.Attachments + webhookType = model.POST_SLACK_ATTACHMENT + } var hook *model.IncomingWebhook if result := <-hchan; result.Err != nil { @@ -1039,7 +1054,7 @@ func incomingWebhook(c *api.Context, w http.ResponseWriter, r *http.Request) { return } - if _, err := api.CreateWebhookPost(c, channel.Id, text, overrideUsername, overrideIconUrl); err != nil { + if _, err := api.CreateWebhookPost(c, channel.Id, text, overrideUsername, overrideIconUrl, parsedRequest.Props, webhookType); err != nil { c.Err = err return } |