summaryrefslogtreecommitdiffstats
path: root/web/web.go
diff options
context:
space:
mode:
authorJoramWilander <jwawilander@gmail.com>2015-10-19 10:19:48 -0400
committerJoramWilander <jwawilander@gmail.com>2015-10-19 10:19:48 -0400
commita3ca10674056d4dfcfec5cfb404f3488f8bc4090 (patch)
tree0ccbc05cc77481aea38632222b1fdbf042a6c75c /web/web.go
parentf24ea30a75ad52b695f5f275139af1c0495624ac (diff)
downloadchat-a3ca10674056d4dfcfec5cfb404f3488f8bc4090.tar.gz
chat-a3ca10674056d4dfcfec5cfb404f3488f8bc4090.tar.bz2
chat-a3ca10674056d4dfcfec5cfb404f3488f8bc4090.zip
Generalized webhook post code and added it to outgoing webhooks
Diffstat (limited to 'web/web.go')
-rw-r--r--web/web.go39
1 files changed, 6 insertions, 33 deletions
diff --git a/web/web.go b/web/web.go
index 00e00b3b9..c6694998a 100644
--- a/web/web.go
+++ b/web/web.go
@@ -15,7 +15,6 @@ import (
"gopkg.in/fsnotify.v1"
"html/template"
"net/http"
- "regexp"
"strconv"
"strings"
)
@@ -921,9 +920,6 @@ func incomingWebhook(c *api.Context, w http.ResponseWriter, r *http.Request) {
channelName := props["channel"]
- overrideUsername := props["username"]
- overrideIconUrl := props["icon_url"]
-
var hook *model.IncomingWebhook
if result := <-hchan; result.Err != nil {
c.Err = model.NewAppError("incomingWebhook", "Invalid webhook", "err="+result.Err.Message)
@@ -952,12 +948,8 @@ func incomingWebhook(c *api.Context, w http.ResponseWriter, r *http.Request) {
cchan = api.Srv.Store.Channel().Get(hook.ChannelId)
}
- // parse links into Markdown format
- linkWithTextRegex := regexp.MustCompile(`<([^<\|]+)\|([^>]+)>`)
- text = linkWithTextRegex.ReplaceAllString(text, "[${2}](${1})")
-
- linkRegex := regexp.MustCompile(`<\s*(\S*)\s*>`)
- text = linkRegex.ReplaceAllString(text, "${1}")
+ overrideUsername := props["username"]
+ overrideIconUrl := props["icon_url"]
if result := <-cchan; result.Err != nil {
c.Err = model.NewAppError("incomingWebhook", "Couldn't find the channel", "err="+result.Err.Message)
@@ -968,35 +960,16 @@ func incomingWebhook(c *api.Context, w http.ResponseWriter, r *http.Request) {
pchan := api.Srv.Store.Channel().CheckPermissionsTo(hook.TeamId, channel.Id, hook.UserId)
- post := &model.Post{UserId: hook.UserId, ChannelId: channel.Id, Message: text}
- post.AddProp("from_webhook", "true")
-
- if utils.Cfg.ServiceSettings.EnablePostUsernameOverride {
- if len(overrideUsername) != 0 {
- post.AddProp("override_username", overrideUsername)
- } else {
- post.AddProp("override_username", model.DEFAULT_WEBHOOK_USERNAME)
- }
- }
-
- if utils.Cfg.ServiceSettings.EnablePostIconOverride {
- if len(overrideIconUrl) != 0 {
- post.AddProp("override_icon_url", overrideIconUrl)
- } else {
- post.AddProp("override_icon_url", model.DEFAULT_WEBHOOK_ICON)
- }
- }
+ // create a mock session
+ c.Session = model.Session{UserId: hook.UserId, TeamId: hook.TeamId, IsOAuth: false}
if !c.HasPermissionsToChannel(pchan, "createIncomingHook") && channel.Type != model.CHANNEL_OPEN {
c.Err = model.NewAppError("incomingWebhook", "Inappropriate channel permissions", "")
return
}
- // create a mock session
- c.Session = model.Session{UserId: hook.UserId, TeamId: hook.TeamId, IsOAuth: false}
-
- if _, err := api.CreatePost(c, post, false); err != nil {
- c.Err = model.NewAppError("incomingWebhook", "Error creating post", "err="+err.Message)
+ if _, err := api.CreateWebhookPost(c, channel.Id, text, overrideUsername, overrideIconUrl); err != nil {
+ c.Err = err
return
}