summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bridge/zulip/zulip.go33
-rw-r--r--gateway/gateway.go4
-rw-r--r--matterbridge.toml.sample13
3 files changed, 21 insertions, 29 deletions
diff --git a/bridge/zulip/zulip.go b/bridge/zulip/zulip.go
index 77bb7e7e..cdf433af 100644
--- a/bridge/zulip/zulip.go
+++ b/bridge/zulip/zulip.go
@@ -4,6 +4,7 @@ import (
"encoding/json"
"io/ioutil"
"strconv"
+ "strings"
"sync"
"time"
@@ -18,12 +19,11 @@ 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), channelToTopic: make(map[string]string)}
+ return &Bzulip{Config: cfg, streams: make(map[int]string)}
}
func (b *Bzulip) Connect() error {
@@ -48,9 +48,6 @@ 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
}
@@ -138,7 +135,14 @@ func (b *Bzulip) handleQueue() error {
if m.SenderEmail == b.GetString("login") {
continue
}
- rmsg := config.Message{Username: m.SenderFullName, Text: m.Content, Channel: b.getChannel(m.StreamID), Account: b.Account, UserID: strconv.Itoa(m.SenderID), Avatar: m.AvatarURL}
+ rmsg := config.Message{
+ Username: m.SenderFullName,
+ Text: m.Content,
+ Channel: b.getChannel(m.StreamID) + "/topic:" + m.Subject,
+ Account: b.Account,
+ UserID: strconv.Itoa(m.SenderID),
+ Avatar: m.AvatarURL,
+ }
b.Log.Debugf("<= Sending message from %s on %s to gateway", rmsg.Username, b.Account)
b.Log.Debugf("<= Message is %#v", rmsg)
b.Remote <- rmsg
@@ -149,12 +153,11 @@ func (b *Bzulip) handleQueue() error {
}
func (b *Bzulip) sendMessage(msg config.Message) (string, error) {
- topic := "matterbridge"
- if b.GetString("topic") != "" {
- topic = b.GetString("topic")
- }
- if res := b.getTopic(msg.Channel); res != "" {
- topic = res
+ topic := ""
+ if strings.Contains(msg.Channel, "/topic:") {
+ res := strings.Split(msg.Channel, "/topic:")
+ topic = res[1]
+ msg.Channel = res[0]
}
m := gzb.Message{
Stream: msg.Channel,
@@ -202,9 +205,3 @@ 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]
-}
diff --git a/gateway/gateway.go b/gateway/gateway.go
index be45086b..82be2a98 100644
--- a/gateway/gateway.go
+++ b/gateway/gateway.go
@@ -159,6 +159,10 @@ func (gw *Gateway) mapChannelConfig(cfg []config.Bridge, direction string) {
gw.logger.Errorf("Mattermost channels do not start with a #: remove the # in %s", br.Channel)
os.Exit(1)
}
+ if strings.HasPrefix(br.Account, "zulip.") && !strings.Contains(br.Channel, "/topic:") {
+ gw.logger.Errorf("Breaking change, since matterbridge 1.14.0 zulip channels need to specify the topic with channel/topic:mytopic in %s of %s", br.Channel, br.Account)
+ os.Exit(1)
+ }
ID := br.Channel + br.Account
if _, ok := gw.Channels[ID]; !ok {
channel := &config.ChannelInfo{
diff --git a/matterbridge.toml.sample b/matterbridge.toml.sample
index 1c517a55..8fbbfe0d 100644
--- a/matterbridge.toml.sample
+++ b/matterbridge.toml.sample
@@ -1363,12 +1363,6 @@ Login="yourbot-bot@yourserver.zulipchat.com"
#REQUIRED
Server="https://yourserver.zulipchat.com"
-#Topic of the messages matterbridge will use
-#OPTIONAL (default "matterbridge")
-#You can specify a specific topic for each channel using [gateway.inout.options]
-#See more information below at the gateway configuration
-Topic="matterbridge"
-
## RELOADABLE SETTINGS
## Settings below can be reloaded by editing the file
@@ -1608,7 +1602,7 @@ enable=true
# if you specify an empty string bridge will list all the possibilities
# - "Group Name" if you specify a group name the bridge will hint its JID to specify
# as group names might change in time and contain weird emoticons
- # zulip - stream (without the #)
+ # zulip - stream/topic:topicname (without the #)
#
# REQUIRED
channel="#testing"
@@ -1650,10 +1644,7 @@ enable=true
[[gateway.inout]]
account="zulip.streamchat"
- channel="general"
- #OPTIONAL - topic only works for zulip
- [gateway.inout.options]
- topic="topic1"
+ channel="general/topic:mytopic"
#API example
#[[gateway.inout]]