summaryrefslogtreecommitdiffstats
path: root/app/post.go
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2018-06-25 12:33:13 -0700
committerGitHub <noreply@github.com>2018-06-25 12:33:13 -0700
commit1e5c432e1029601a664454388ae366ef69618d62 (patch)
treecb9e8bfb66640ac3b29c934bb2c3202d25aeb368 /app/post.go
parentecefa6cdd1e7376046bbec82c1b47f7756fea646 (diff)
downloadchat-1e5c432e1029601a664454388ae366ef69618d62.tar.gz
chat-1e5c432e1029601a664454388ae366ef69618d62.tar.bz2
chat-1e5c432e1029601a664454388ae366ef69618d62.zip
MM-10702 Moving plugins to use hashicorp go-plugin. (#8978)
* Moving plugins to use hashicorp go-plugin. * Tweaks from feedback.
Diffstat (limited to 'app/post.go')
-rw-r--r--app/post.go31
1 files changed, 22 insertions, 9 deletions
diff --git a/app/post.go b/app/post.go
index e24018995..7e53de2f9 100644
--- a/app/post.go
+++ b/app/post.go
@@ -18,6 +18,7 @@ import (
"github.com/dyatlov/go-opengraph/opengraph"
"github.com/mattermost/mattermost-server/mlog"
"github.com/mattermost/mattermost-server/model"
+ "github.com/mattermost/mattermost-server/plugin"
"github.com/mattermost/mattermost-server/store"
"github.com/mattermost/mattermost-server/utils"
"golang.org/x/net/html/charset"
@@ -161,10 +162,13 @@ func (a *App) CreatePost(post *model.Post, channel *model.Channel, triggerWebhoo
}
if a.PluginsReady() {
- if newPost, rejectionReason := a.PluginEnv.Hooks().MessageWillBePosted(post); newPost == nil {
+ var rejectionReason string
+ a.Plugins.RunMultiPluginHook(func(hooks plugin.Hooks) bool {
+ post, rejectionReason = hooks.MessageWillBePosted(post)
+ return post != nil
+ }, plugin.MessageWillBePostedId)
+ if post == nil {
return nil, model.NewAppError("createPost", "Post rejected by plugin. "+rejectionReason, nil, "", http.StatusBadRequest)
- } else {
- post = newPost
}
}
@@ -177,7 +181,10 @@ func (a *App) CreatePost(post *model.Post, channel *model.Channel, triggerWebhoo
if a.PluginsReady() {
a.Go(func() {
- a.PluginEnv.Hooks().MessageHasBeenPosted(rpost)
+ a.Plugins.RunMultiPluginHook(func(hooks plugin.Hooks) bool {
+ hooks.MessageHasBeenPosted(rpost)
+ return true
+ }, plugin.MessageHasBeenPostedId)
})
}
@@ -386,10 +393,13 @@ func (a *App) UpdatePost(post *model.Post, safeUpdate bool) (*model.Post, *model
}
if a.PluginsReady() {
- if pluginModifiedPost, rejectionReason := a.PluginEnv.Hooks().MessageWillBeUpdated(newPost, oldPost); pluginModifiedPost == nil {
- return nil, model.NewAppError("createPost", "Post rejected by plugin. "+rejectionReason, nil, "", http.StatusBadRequest)
- } else {
- newPost = pluginModifiedPost
+ var rejectionReason string
+ a.Plugins.RunMultiPluginHook(func(hooks plugin.Hooks) bool {
+ newPost, rejectionReason = hooks.MessageWillBeUpdated(newPost, oldPost)
+ return post != nil
+ }, plugin.MessageWillBeUpdatedId)
+ if newPost == nil {
+ return nil, model.NewAppError("UpdatePost", "Post rejected by plugin. "+rejectionReason, nil, "", http.StatusBadRequest)
}
}
@@ -400,7 +410,10 @@ func (a *App) UpdatePost(post *model.Post, safeUpdate bool) (*model.Post, *model
if a.PluginsReady() {
a.Go(func() {
- a.PluginEnv.Hooks().MessageHasBeenUpdated(newPost, oldPost)
+ a.Plugins.RunMultiPluginHook(func(hooks plugin.Hooks) bool {
+ hooks.MessageHasBeenUpdated(newPost, oldPost)
+ return true
+ }, plugin.MessageHasBeenUpdatedId)
})
}