diff options
author | Christopher Speller <crspeller@gmail.com> | 2018-06-25 12:33:13 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-25 12:33:13 -0700 |
commit | 1e5c432e1029601a664454388ae366ef69618d62 (patch) | |
tree | cb9e8bfb66640ac3b29c934bb2c3202d25aeb368 /app/post.go | |
parent | ecefa6cdd1e7376046bbec82c1b47f7756fea646 (diff) | |
download | chat-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.go | 31 |
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) }) } |