summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/mattermost/mattermost-server/v6/model/mention_map.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2021-10-16 23:11:32 +0200
committerWim <wim@42.be>2021-10-16 23:23:24 +0200
commit20f6c05ec50739d31f4dbe9fde0d223f2c43f6e8 (patch)
tree230edca06449a8d1755f08aabf45a03e07e6f17c /vendor/github.com/mattermost/mattermost-server/v6/model/mention_map.go
parent57fce93af7f64f025cec6f3ed6088163086bc9fe (diff)
downloadmatterbridge-msglm-20f6c05ec50739d31f4dbe9fde0d223f2c43f6e8.tar.gz
matterbridge-msglm-20f6c05ec50739d31f4dbe9fde0d223f2c43f6e8.tar.bz2
matterbridge-msglm-20f6c05ec50739d31f4dbe9fde0d223f2c43f6e8.zip
Update vendor
Diffstat (limited to 'vendor/github.com/mattermost/mattermost-server/v6/model/mention_map.go')
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/mention_map.go80
1 files changed, 80 insertions, 0 deletions
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/mention_map.go b/vendor/github.com/mattermost/mattermost-server/v6/model/mention_map.go
new file mode 100644
index 00000000..2f3444dd
--- /dev/null
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/mention_map.go
@@ -0,0 +1,80 @@
+// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
+// See LICENSE.txt for license information.
+
+package model
+
+import (
+ "fmt"
+ "net/url"
+)
+
+type UserMentionMap map[string]string
+type ChannelMentionMap map[string]string
+
+const (
+ userMentionsKey = "user_mentions"
+ userMentionsIdsKey = "user_mentions_ids"
+ channelMentionsKey = "channel_mentions"
+ channelMentionsIdsKey = "channel_mentions_ids"
+)
+
+func UserMentionMapFromURLValues(values url.Values) (UserMentionMap, error) {
+ return mentionsFromURLValues(values, userMentionsKey, userMentionsIdsKey)
+}
+
+func (m UserMentionMap) ToURLValues() url.Values {
+ return mentionsToURLValues(m, userMentionsKey, userMentionsIdsKey)
+}
+
+func ChannelMentionMapFromURLValues(values url.Values) (ChannelMentionMap, error) {
+ return mentionsFromURLValues(values, channelMentionsKey, channelMentionsIdsKey)
+}
+
+func (m ChannelMentionMap) ToURLValues() url.Values {
+ return mentionsToURLValues(m, channelMentionsKey, channelMentionsIdsKey)
+}
+
+func mentionsFromURLValues(values url.Values, mentionKey, idKey string) (map[string]string, error) {
+ mentions, mentionsOk := values[mentionKey]
+ ids, idsOk := values[idKey]
+
+ if !mentionsOk && !idsOk {
+ return map[string]string{}, nil
+ }
+
+ if !mentionsOk {
+ return nil, fmt.Errorf("%s key not found", mentionKey)
+ }
+
+ if !idsOk {
+ return nil, fmt.Errorf("%s key not found", idKey)
+ }
+
+ if len(mentions) != len(ids) {
+ return nil, fmt.Errorf("keys %s and %s have different length", mentionKey, idKey)
+ }
+
+ mentionsMap := make(map[string]string)
+ for i, mention := range mentions {
+ id := ids[i]
+
+ if oldId, ok := mentionsMap[mention]; ok && oldId != id {
+ return nil, fmt.Errorf("key %s has two different values: %s and %s", mention, oldId, id)
+ }
+
+ mentionsMap[mention] = id
+ }
+
+ return mentionsMap, nil
+}
+
+func mentionsToURLValues(mentions map[string]string, mentionKey, idKey string) url.Values {
+ values := url.Values{}
+
+ for mention, id := range mentions {
+ values.Add(mentionKey, mention)
+ values.Add(idKey, id)
+ }
+
+ return values
+}