summaryrefslogtreecommitdiff
path: root/deprecated-webircgateway/pkg/irc/isupport.go
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated-webircgateway/pkg/irc/isupport.go')
-rw-r--r--deprecated-webircgateway/pkg/irc/isupport.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/deprecated-webircgateway/pkg/irc/isupport.go b/deprecated-webircgateway/pkg/irc/isupport.go
new file mode 100644
index 0000000..fdb7bee
--- /dev/null
+++ b/deprecated-webircgateway/pkg/irc/isupport.go
@@ -0,0 +1,56 @@
+package irc
+
+import (
+ "strings"
+ "sync"
+)
+
+type ISupport struct {
+ Received bool
+ Injected bool
+ Tags map[string]string
+ tokens map[string]string
+ tokensMutex sync.RWMutex
+}
+
+func (m *ISupport) ClearTokens() {
+ m.tokensMutex.Lock()
+ m.tokens = make(map[string]string)
+ m.tokensMutex.Unlock()
+}
+
+func (m *ISupport) AddToken(tokenPair string) {
+ m.tokensMutex.Lock()
+ m.addToken(tokenPair)
+ m.tokensMutex.Unlock()
+}
+
+func (m *ISupport) AddTokens(tokenPairs []string) {
+ m.tokensMutex.Lock()
+ for _, tp := range tokenPairs {
+ m.addToken(tp)
+ }
+ m.tokensMutex.Unlock()
+}
+
+func (m *ISupport) HasToken(key string) (ok bool) {
+ m.tokensMutex.RLock()
+ _, ok = m.tokens[strings.ToUpper(key)]
+ m.tokensMutex.RUnlock()
+ return
+}
+
+func (m *ISupport) GetToken(key string) (val string) {
+ m.tokensMutex.RLock()
+ val = m.tokens[strings.ToUpper(key)]
+ m.tokensMutex.RUnlock()
+ return
+}
+
+func (m *ISupport) addToken(tokenPair string) {
+ kv := strings.Split(tokenPair, "=")
+ if len(kv) == 1 {
+ kv = append(kv, "")
+ }
+ m.tokens[strings.ToUpper(kv[0])] = kv[1]
+}