diff options
-rw-r--r-- | bridge/mattermost/mattermost.go | 9 | ||||
-rw-r--r-- | bridge/telegram/telegram.go | 24 | ||||
-rw-r--r-- | gateway/gateway.go | 12 | ||||
-rw-r--r-- | gateway/gateway_test.go | 54 |
4 files changed, 58 insertions, 41 deletions
diff --git a/bridge/mattermost/mattermost.go b/bridge/mattermost/mattermost.go index 2e934469..5e04923e 100644 --- a/bridge/mattermost/mattermost.go +++ b/bridge/mattermost/mattermost.go @@ -10,6 +10,7 @@ import ( "github.com/42wim/matterbridge/bridge/helper" "github.com/42wim/matterbridge/matterclient" "github.com/42wim/matterbridge/matterhook" + "github.com/mattermost/platform/model" "github.com/rs/xid" ) @@ -239,11 +240,11 @@ func (b *Bmattermost) handleMatterClient(messages chan *config.Message) { } // create a text for bridges that don't support native editing - if message.Raw.Event == "post_edited" && !b.GetBool("EditDisable") { + if message.Raw.Event == model.WEBSOCKET_EVENT_POST_EDITED && !b.GetBool("EditDisable") { rmsg.Text = message.Text + b.GetString("EditSuffix") } - if message.Raw.Event == "post_deleted" { + if message.Raw.Event == model.WEBSOCKET_EVENT_POST_DELETED { rmsg.Event = config.EVENT_MSG_DELETE } @@ -434,7 +435,7 @@ func (b *Bmattermost) skipMessage(message *matterclient.Message) bool { } // Handle edited messages - if (message.Raw.Event == "post_edited") && b.GetBool("EditDisable") { + if (message.Raw.Event == model.WEBSOCKET_EVENT_POST_EDITED) && b.GetBool("EditDisable") { return true } @@ -462,7 +463,7 @@ func (b *Bmattermost) skipMessage(message *matterclient.Message) bool { } // only handle posted, edited or deleted events - if !(message.Raw.Event == "posted" || message.Raw.Event == "post_edited" || message.Raw.Event == "post_deleted") { + if !(message.Raw.Event == "posted" || message.Raw.Event == model.WEBSOCKET_EVENT_POST_EDITED || message.Raw.Event == model.WEBSOCKET_EVENT_POST_DELETED) { return true } return false diff --git a/bridge/telegram/telegram.go b/bridge/telegram/telegram.go index 43d68edc..748ee87d 100644 --- a/bridge/telegram/telegram.go +++ b/bridge/telegram/telegram.go @@ -12,6 +12,12 @@ import ( "github.com/go-telegram-bot-api/telegram-bot-api" ) +const ( + unknownUser = "unknown" + HTMLFormat = "HTML" + HTMLNick = "htmlnick" +) + type Btelegram struct { c *tgbotapi.BotAPI *bridge.Config @@ -64,7 +70,7 @@ func (b *Btelegram) Send(msg config.Message) (string, error) { return b.cacheAvatar(&msg) } - if b.GetString("MessageFormat") == "HTML" { + if b.GetString("MessageFormat") == HTMLFormat { msg.Text = makeHTML(msg.Text) } @@ -98,12 +104,12 @@ func (b *Btelegram) Send(msg config.Message) (string, error) { if err != nil { return "", err } - if strings.ToLower(b.GetString("MessageFormat")) == "htmlnick" { + if strings.ToLower(b.GetString("MessageFormat")) == HTMLNick { b.Log.Debug("Using mode HTML - nick only") msg.Text = html.EscapeString(msg.Text) } m := tgbotapi.NewEditMessageText(chatid, msgid, msg.Username+msg.Text) - if b.GetString("MessageFormat") == "HTML" { + if b.GetString("MessageFormat") == HTMLFormat { b.Log.Debug("Using mode HTML") m.ParseMode = tgbotapi.ModeHTML } @@ -111,7 +117,7 @@ func (b *Btelegram) Send(msg config.Message) (string, error) { b.Log.Debug("Using mode markdown") m.ParseMode = tgbotapi.ModeMarkdown } - if strings.ToLower(b.GetString("MessageFormat")) == "htmlnick" { + if strings.ToLower(b.GetString("MessageFormat")) == HTMLNick { b.Log.Debug("Using mode HTML - nick only") m.ParseMode = tgbotapi.ModeHTML } @@ -187,7 +193,7 @@ func (b *Btelegram) handleRecv(updates <-chan tgbotapi.Update) { // if we really didn't find a username, set it to unknown if rmsg.Username == "" { - rmsg.Username = "unknown" + rmsg.Username = unknownUser } // handle any downloads @@ -209,7 +215,7 @@ func (b *Btelegram) handleRecv(updates <-chan tgbotapi.Update) { } } if usernameForward == "" { - usernameForward = "unknown" + usernameForward = unknownUser } rmsg.Text = "Forwarded from " + usernameForward + ": " + rmsg.Text } @@ -229,7 +235,7 @@ func (b *Btelegram) handleRecv(updates <-chan tgbotapi.Update) { } } if usernameReply == "" { - usernameReply = "unknown" + usernameReply = unknownUser } if !b.GetBool("QuoteDisable") { rmsg.Text = b.handleQuote(rmsg.Text, usernameReply, message.ReplyToMessage.Text) @@ -401,7 +407,7 @@ func (b *Btelegram) handleUploadFile(msg *config.Message, chatid int64) (string, func (b *Btelegram) sendMessage(chatid int64, username, text string) (string, error) { m := tgbotapi.NewMessage(chatid, "") m.Text = username + text - if b.GetString("MessageFormat") == "HTML" { + if b.GetString("MessageFormat") == HTMLFormat { b.Log.Debug("Using mode HTML") m.ParseMode = tgbotapi.ModeHTML } @@ -409,7 +415,7 @@ func (b *Btelegram) sendMessage(chatid int64, username, text string) (string, er b.Log.Debug("Using mode markdown") m.ParseMode = tgbotapi.ModeMarkdown } - if strings.ToLower(b.GetString("MessageFormat")) == "htmlnick" { + if strings.ToLower(b.GetString("MessageFormat")) == HTMLNick { b.Log.Debug("Using mode HTML - nick only") m.Text = username + html.EscapeString(text) m.ParseMode = tgbotapi.ModeHTML diff --git a/gateway/gateway.go b/gateway/gateway.go index 3a6fa1e0..34cdd7fe 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -70,6 +70,10 @@ var bridgeMap = map[string]bridge.Factory{ "zulip": bzulip.New, } +const ( + apiProtocol = "api" +) + func init() { flog = log.WithFields(log.Fields{"prefix": "gateway"}) } @@ -158,7 +162,7 @@ RECONNECT: func (gw *Gateway) mapChannelConfig(cfg []config.Bridge, direction string) { for _, br := range cfg { if isApi(br.Account) { - br.Channel = "api" + br.Channel = apiProtocol } // make sure to lowercase irc channels in config #348 if strings.HasPrefix(br.Account, "irc.") { @@ -191,7 +195,7 @@ func (gw *Gateway) getDestChannel(msg *config.Message, dest bridge.Bridge) []con var channels []config.ChannelInfo // for messages received from the api check that the gateway is the specified one - if msg.Protocol == "api" && gw.Name != msg.Gateway { + if msg.Protocol == apiProtocol && gw.Name != msg.Gateway { return channels } @@ -310,7 +314,7 @@ func (gw *Gateway) handleMessage(msg config.Message, dest *bridge.Bridge) []*BrM msg.ID = gw.getDestMsgID(origmsg.ID, dest, channel) // for api we need originchannel as channel - if dest.Protocol == "api" { + if dest.Protocol == apiProtocol { msg.Channel = originchannel } @@ -459,7 +463,7 @@ func (gw *Gateway) modifyMessage(msg *config.Message) { } // messages from api have Gateway specified, don't overwrite - if msg.Protocol != "api" { + if msg.Protocol != apiProtocol { msg.Gateway = gw.Name } } diff --git a/gateway/gateway_test.go b/gateway/gateway_test.go index 0a1470ff..e7b77bf4 100644 --- a/gateway/gateway_test.go +++ b/gateway/gateway_test.go @@ -152,6 +152,12 @@ enable=true channel="--333333333333" `) +const ( + ircTestAccount = "irc.zzz" + tgTestAccount = "telegram.zzz" + slackTestAccount = "slack.zzz" +) + func maketestRouter(input []byte) *Router { cfg := config.NewConfigFromString(input) r, err := NewRouter(cfg) @@ -248,31 +254,31 @@ func TestGetDestChannelAdvanced(t *testing.T) { switch gw.Name { case "bridge": if (msg.Channel == "#main" || msg.Channel == "-1111111111111" || msg.Channel == "irc") && - (msg.Account == "irc.zzz" || msg.Account == "telegram.zzz" || msg.Account == "slack.zzz") { + (msg.Account == ircTestAccount || msg.Account == tgTestAccount || msg.Account == slackTestAccount) { hits[gw.Name]++ switch br.Account { - case "irc.zzz": + case ircTestAccount: assert.Equal(t, []config.ChannelInfo{{ Name: "#main", - Account: "irc.zzz", + Account: ircTestAccount, Direction: "inout", ID: "#mainirc.zzz", SameChannel: map[string]bool{"bridge": false}, Options: config.ChannelOptions{Key: ""}, }}, channels) - case "telegram.zzz": + case tgTestAccount: assert.Equal(t, []config.ChannelInfo{{ Name: "-1111111111111", - Account: "telegram.zzz", + Account: tgTestAccount, Direction: "inout", ID: "-1111111111111telegram.zzz", SameChannel: map[string]bool{"bridge": false}, Options: config.ChannelOptions{Key: ""}, }}, channels) - case "slack.zzz": + case slackTestAccount: assert.Equal(t, []config.ChannelInfo{{ Name: "irc", - Account: "slack.zzz", + Account: slackTestAccount, Direction: "inout", ID: "ircslack.zzz", SameChannel: map[string]bool{"bridge": false}, @@ -282,22 +288,22 @@ func TestGetDestChannelAdvanced(t *testing.T) { } case "bridge2": if (msg.Channel == "#main-help" || msg.Channel == "--444444444444") && - (msg.Account == "irc.zzz" || msg.Account == "telegram.zzz") { + (msg.Account == ircTestAccount || msg.Account == tgTestAccount) { hits[gw.Name]++ switch br.Account { - case "irc.zzz": + case ircTestAccount: assert.Equal(t, []config.ChannelInfo{{ Name: "#main-help", - Account: "irc.zzz", + Account: ircTestAccount, Direction: "inout", ID: "#main-helpirc.zzz", SameChannel: map[string]bool{"bridge2": false}, Options: config.ChannelOptions{Key: ""}, }}, channels) - case "telegram.zzz": + case tgTestAccount: assert.Equal(t, []config.ChannelInfo{{ Name: "--444444444444", - Account: "telegram.zzz", + Account: tgTestAccount, Direction: "inout", ID: "--444444444444telegram.zzz", SameChannel: map[string]bool{"bridge2": false}, @@ -307,22 +313,22 @@ func TestGetDestChannelAdvanced(t *testing.T) { } case "bridge3": if (msg.Channel == "#main-telegram" || msg.Channel == "--333333333333") && - (msg.Account == "irc.zzz" || msg.Account == "telegram.zzz") { + (msg.Account == ircTestAccount || msg.Account == tgTestAccount) { hits[gw.Name]++ switch br.Account { - case "irc.zzz": + case ircTestAccount: assert.Equal(t, []config.ChannelInfo{{ Name: "#main-telegram", - Account: "irc.zzz", + Account: ircTestAccount, Direction: "inout", ID: "#main-telegramirc.zzz", SameChannel: map[string]bool{"bridge3": false}, Options: config.ChannelOptions{Key: ""}, }}, channels) - case "telegram.zzz": + case tgTestAccount: assert.Equal(t, []config.ChannelInfo{{ Name: "--333333333333", - Account: "telegram.zzz", + Account: tgTestAccount, Direction: "inout", ID: "--333333333333telegram.zzz", SameChannel: map[string]bool{"bridge3": false}, @@ -337,11 +343,11 @@ func TestGetDestChannelAdvanced(t *testing.T) { } hits[gw.Name]++ switch br.Account { - case "irc.zzz": + case ircTestAccount: assert.Len(t, channels, 2) assert.Contains(t, channels, config.ChannelInfo{ Name: "#main", - Account: "irc.zzz", + Account: ircTestAccount, Direction: "out", ID: "#mainirc.zzz", SameChannel: map[string]bool{"announcements": false}, @@ -349,25 +355,25 @@ func TestGetDestChannelAdvanced(t *testing.T) { }) assert.Contains(t, channels, config.ChannelInfo{ Name: "#main-help", - Account: "irc.zzz", + Account: ircTestAccount, Direction: "out", ID: "#main-helpirc.zzz", SameChannel: map[string]bool{"announcements": false}, Options: config.ChannelOptions{Key: ""}, }) - case "slack.zzz": + case slackTestAccount: assert.Equal(t, []config.ChannelInfo{{ Name: "general", - Account: "slack.zzz", + Account: slackTestAccount, Direction: "out", ID: "generalslack.zzz", SameChannel: map[string]bool{"announcements": false}, Options: config.ChannelOptions{Key: ""}, }}, channels) - case "telegram.zzz": + case tgTestAccount: assert.Equal(t, []config.ChannelInfo{{ Name: "--333333333333", - Account: "telegram.zzz", + Account: tgTestAccount, Direction: "out", ID: "--333333333333telegram.zzz", SameChannel: map[string]bool{"announcements": false}, |