diff options
author | Joram Wilander <jwawilander@gmail.com> | 2015-11-06 09:05:32 -0500 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2015-11-06 09:05:32 -0500 |
commit | 1ecad4301e6e511a426da5884a54111c5bb7a4fd (patch) | |
tree | 114dea884f0a08729f5b6b5f9e45d2e470bedc71 /api/post.go | |
parent | 6417d4728dc9351d5bf3180e458be8ce6e1e642f (diff) | |
parent | 195728b949a4f3aee75e01f4b0e4a0b2f67850da (diff) | |
download | chat-1ecad4301e6e511a426da5884a54111c5bb7a4fd.tar.gz chat-1ecad4301e6e511a426da5884a54111c5bb7a4fd.tar.bz2 chat-1ecad4301e6e511a426da5884a54111c5bb7a4fd.zip |
Merge pull request #1327 from florianorben/PLT-857-2
PLT-857: Support `attachments` for Incoming Webhooks
Diffstat (limited to 'api/post.go')
-rw-r--r-- | api/post.go | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/api/post.go b/api/post.go index b52db8752..3892d4ee8 100644 --- a/api/post.go +++ b/api/post.go @@ -147,7 +147,7 @@ func CreatePost(c *Context, post *model.Post, triggerWebhooks bool) (*model.Post return rpost, nil } -func CreateWebhookPost(c *Context, channelId, text, overrideUsername, overrideIconUrl string) (*model.Post, *model.AppError) { +func CreateWebhookPost(c *Context, channelId, text, overrideUsername, overrideIconUrl string, props model.StringInterface, postType string) (*model.Post, *model.AppError) { // parse links into Markdown format linkWithTextRegex := regexp.MustCompile(`<([^<\|]+)\|([^>]+)>`) text = linkWithTextRegex.ReplaceAllString(text, "[${2}](${1})") @@ -155,7 +155,7 @@ func CreateWebhookPost(c *Context, channelId, text, overrideUsername, overrideIc linkRegex := regexp.MustCompile(`<\s*(\S*)\s*>`) text = linkRegex.ReplaceAllString(text, "${1}") - post := &model.Post{UserId: c.Session.UserId, ChannelId: channelId, Message: text} + post := &model.Post{UserId: c.Session.UserId, ChannelId: channelId, Message: text, Type: postType} post.AddProp("from_webhook", "true") if utils.Cfg.ServiceSettings.EnablePostUsernameOverride { @@ -174,6 +174,14 @@ func CreateWebhookPost(c *Context, channelId, text, overrideUsername, overrideIc } } + if len(props) > 0 { + for key, val := range props { + if key != "override_icon_url" && key != "override_username" && key != "from_webhook" { + post.AddProp(key, val) + } + } + } + if _, err := CreatePost(c, post, false); err != nil { return nil, model.NewAppError("CreateWebhookPost", "Error creating post", "err="+err.Message) } @@ -286,7 +294,7 @@ func handleWebhookEventsAndForget(c *Context, post *model.Post, team *model.Team newContext := &Context{mockSession, model.NewId(), "", c.Path, nil, c.teamURLValid, c.teamURL, c.siteURL, 0} if text, ok := respProps["text"]; ok { - if _, err := CreateWebhookPost(newContext, post.ChannelId, text, respProps["username"], respProps["icon_url"]); err != nil { + if _, err := CreateWebhookPost(newContext, post.ChannelId, text, respProps["username"], respProps["icon_url"], post.Props, post.Type); err != nil { l4g.Error("Failed to create response post, err=%v", err) } } |