summaryrefslogtreecommitdiffstats
path: root/api4/plugin.go
diff options
context:
space:
mode:
Diffstat (limited to 'api4/plugin.go')
-rw-r--r--api4/plugin.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/api4/plugin.go b/api4/plugin.go
index 5b030e71d..ac1620335 100644
--- a/api4/plugin.go
+++ b/api4/plugin.go
@@ -25,6 +25,8 @@ func InitPlugin() {
BaseRoutes.Plugins.Handle("", ApiSessionRequired(getPlugins)).Methods("GET")
BaseRoutes.Plugin.Handle("", ApiSessionRequired(removePlugin)).Methods("DELETE")
+ BaseRoutes.Plugins.Handle("/webapp", ApiHandler(getWebappPlugins)).Methods("GET")
+
}
func uploadPlugin(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -118,3 +120,25 @@ func removePlugin(c *Context, w http.ResponseWriter, r *http.Request) {
ReturnStatusOK(w)
}
+
+func getWebappPlugins(c *Context, w http.ResponseWriter, r *http.Request) {
+ if !*utils.Cfg.PluginSettings.Enable {
+ c.Err = model.NewAppError("getWebappPlugins", "app.plugin.disabled.app_error", nil, "", http.StatusNotImplemented)
+ return
+ }
+
+ manifests, err := c.App.GetActivePluginManifests()
+ if err != nil {
+ c.Err = err
+ return
+ }
+
+ clientManifests := []*model.Manifest{}
+ for _, m := range manifests {
+ if m.HasClient() {
+ clientManifests = append(clientManifests, m.ClientManifest())
+ }
+ }
+
+ w.Write([]byte(model.ManifestListToJson(clientManifests)))
+}