diff options
| author | Mistivia <i@mistivia.com> | 2025-11-02 15:29:28 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-11-02 15:29:28 +0800 |
| commit | 9f42c2d5f911cb4e215d7873221e642ce7df4d61 (patch) | |
| tree | 6dac90a889a7402a9556d3d1bcc5cb53cdb9f123 /deprecated-webircgateway/pkg/irc/isupport.go | |
| parent | fb2d9de539b660a261af19b1cbcceb7ee7980cb1 (diff) | |
deprecate webircdateway and ngircd
Diffstat (limited to 'deprecated-webircgateway/pkg/irc/isupport.go')
| -rw-r--r-- | deprecated-webircgateway/pkg/irc/isupport.go | 56 |
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] +} |
