summaryrefslogtreecommitdiffstats
path: root/app/plugin_key_value_store.go
diff options
context:
space:
mode:
authorJoramWilander <jwawilander@gmail.com>2018-07-10 15:01:43 -0400
committerJoramWilander <jwawilander@gmail.com>2018-07-10 15:01:43 -0400
commit6c7dc2d29ccac5f9925402f6be1a4c2a3c46c005 (patch)
tree5564a47257bf6e85aaef711980c5b0fcb4d07dcc /app/plugin_key_value_store.go
parentc042ffa460296587579aff54b157a5109e022f7e (diff)
parent1e1a5e5e85240f25c4faddcb24c5a29a915fe6e4 (diff)
downloadchat-6c7dc2d29ccac5f9925402f6be1a4c2a3c46c005.tar.gz
chat-6c7dc2d29ccac5f9925402f6be1a4c2a3c46c005.tar.bz2
chat-6c7dc2d29ccac5f9925402f6be1a4c2a3c46c005.zip
Merge branch 'plugins-2'
Diffstat (limited to 'app/plugin_key_value_store.go')
-rw-r--r--app/plugin_key_value_store.go61
1 files changed, 61 insertions, 0 deletions
diff --git a/app/plugin_key_value_store.go b/app/plugin_key_value_store.go
new file mode 100644
index 000000000..bf2a46004
--- /dev/null
+++ b/app/plugin_key_value_store.go
@@ -0,0 +1,61 @@
+// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
+// See LICENSE.txt for license information.
+
+package app
+
+import (
+ "crypto/sha256"
+ "encoding/base64"
+ "net/http"
+
+ "github.com/mattermost/mattermost-server/mlog"
+ "github.com/mattermost/mattermost-server/model"
+)
+
+func getKeyHash(key string) string {
+ hash := sha256.New()
+ hash.Write([]byte(key))
+ return base64.StdEncoding.EncodeToString(hash.Sum(nil))
+}
+
+func (a *App) SetPluginKey(pluginId string, key string, value []byte) *model.AppError {
+ kv := &model.PluginKeyValue{
+ PluginId: pluginId,
+ Key: getKeyHash(key),
+ Value: value,
+ }
+
+ result := <-a.Srv.Store.Plugin().SaveOrUpdate(kv)
+
+ if result.Err != nil {
+ mlog.Error(result.Err.Error())
+ }
+
+ return result.Err
+}
+
+func (a *App) GetPluginKey(pluginId string, key string) ([]byte, *model.AppError) {
+ result := <-a.Srv.Store.Plugin().Get(pluginId, getKeyHash(key))
+
+ if result.Err != nil {
+ if result.Err.StatusCode == http.StatusNotFound {
+ return nil, nil
+ }
+ mlog.Error(result.Err.Error())
+ return nil, result.Err
+ }
+
+ kv := result.Data.(*model.PluginKeyValue)
+
+ return kv.Value, nil
+}
+
+func (a *App) DeletePluginKey(pluginId string, key string) *model.AppError {
+ result := <-a.Srv.Store.Plugin().Delete(pluginId, getKeyHash(key))
+
+ if result.Err != nil {
+ mlog.Error(result.Err.Error())
+ }
+
+ return result.Err
+}