summaryrefslogtreecommitdiffstats
path: root/bridge
diff options
context:
space:
mode:
Diffstat (limited to 'bridge')
-rw-r--r--bridge/config/config.go1
-rw-r--r--bridge/zulip/zulip.go17
2 files changed, 17 insertions, 1 deletions
diff --git a/bridge/config/config.go b/bridge/config/config.go
index 3d1206c7..98f3f2ac 100644
--- a/bridge/config/config.go
+++ b/bridge/config/config.go
@@ -146,6 +146,7 @@ type Protocol struct {
type ChannelOptions struct {
Key string // irc, xmpp
WebhookURL string // discord
+ Topic string // zulip
}
type Bridge struct {
diff --git a/bridge/zulip/zulip.go b/bridge/zulip/zulip.go
index 3c6c7ec6..89c3b059 100644
--- a/bridge/zulip/zulip.go
+++ b/bridge/zulip/zulip.go
@@ -4,6 +4,7 @@ import (
"encoding/json"
"io/ioutil"
"strconv"
+ "sync"
"time"
"github.com/42wim/matterbridge/bridge"
@@ -17,10 +18,12 @@ type Bzulip struct {
bot *gzb.Bot
streams map[int]string
*bridge.Config
+ channelToTopic map[string]string
+ sync.RWMutex
}
func New(cfg *bridge.Config) bridge.Bridger {
- return &Bzulip{Config: cfg, streams: make(map[int]string)}
+ return &Bzulip{Config: cfg, streams: make(map[int]string), channelToTopic: make(map[string]string)}
}
func (b *Bzulip) Connect() error {
@@ -45,6 +48,9 @@ func (b *Bzulip) Disconnect() error {
}
func (b *Bzulip) JoinChannel(channel config.ChannelInfo) error {
+ b.Lock()
+ defer b.Unlock()
+ b.channelToTopic[channel.Name] = channel.Options.Topic
return nil
}
@@ -145,6 +151,9 @@ func (b *Bzulip) sendMessage(msg config.Message) (string, error) {
if b.GetString("topic") != "" {
topic = b.GetString("topic")
}
+ if res := b.getTopic(msg.Channel); res != "" {
+ topic = res
+ }
m := gzb.Message{
Stream: msg.Channel,
Topic: topic,
@@ -191,3 +200,9 @@ func (b *Bzulip) handleUploadFile(msg *config.Message) (string, error) {
}
return "", nil
}
+
+func (b *Bzulip) getTopic(channel string) string {
+ b.RLock()
+ defer b.RUnlock()
+ return b.channelToTopic[channel]
+}