summaryrefslogtreecommitdiffstats
path: root/bridge/bridge.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2018-02-27 00:33:21 +0100
committerWim <wim@42.be>2018-02-27 23:22:12 +0100
commit2bac8673829516d8314c459133e85a8c0cc1959c (patch)
treeed4123232727f9c53c685b1687725206f0b02cb6 /bridge/bridge.go
parent5fbd8a3be05cdecdde515ad459b7a5d87b056956 (diff)
downloadmatterbridge-msglm-2bac8673829516d8314c459133e85a8c0cc1959c.tar.gz
matterbridge-msglm-2bac8673829516d8314c459133e85a8c0cc1959c.tar.bz2
matterbridge-msglm-2bac8673829516d8314c459133e85a8c0cc1959c.zip
Refactor using factory
Diffstat (limited to 'bridge/bridge.go')
-rw-r--r--bridge/bridge.go67
1 files changed, 5 insertions, 62 deletions
diff --git a/bridge/bridge.go b/bridge/bridge.go
index 87db37e3..93e1cd8f 100644
--- a/bridge/bridge.go
+++ b/bridge/bridge.go
@@ -1,19 +1,7 @@
package bridge
import (
- "github.com/42wim/matterbridge/bridge/api"
"github.com/42wim/matterbridge/bridge/config"
- "github.com/42wim/matterbridge/bridge/discord"
- "github.com/42wim/matterbridge/bridge/gitter"
- "github.com/42wim/matterbridge/bridge/irc"
- "github.com/42wim/matterbridge/bridge/matrix"
- "github.com/42wim/matterbridge/bridge/mattermost"
- "github.com/42wim/matterbridge/bridge/rocketchat"
- "github.com/42wim/matterbridge/bridge/slack"
- "github.com/42wim/matterbridge/bridge/sshchat"
- "github.com/42wim/matterbridge/bridge/steam"
- "github.com/42wim/matterbridge/bridge/telegram"
- "github.com/42wim/matterbridge/bridge/xmpp"
log "github.com/sirupsen/logrus"
"strings"
@@ -34,15 +22,13 @@ type Bridge struct {
Protocol string
Channels map[string]config.ChannelInfo
Joined map[string]bool
+ Log *log.Entry
}
-var flog *log.Entry
+// Factory is the factory function to create a bridge
+type Factory func(*config.BridgeConfig) Bridger
-func init() {
- flog = log.WithFields(log.Fields{"prefix": "bridge"})
-}
-
-func New(cfg *config.Config, bridge *config.Bridge, c chan config.Message) *Bridge {
+func New(bridge *config.Bridge) *Bridge {
b := new(Bridge)
b.Channels = make(map[string]config.ChannelInfo)
accInfo := strings.Split(bridge.Account, ".")
@@ -52,49 +38,6 @@ func New(cfg *config.Config, bridge *config.Bridge, c chan config.Message) *Brid
b.Protocol = protocol
b.Account = bridge.Account
b.Joined = make(map[string]bool)
- bridgeConfig := &config.BridgeConfig{General: &cfg.General, Account: bridge.Account, Remote: c}
-
- // override config from environment
- config.OverrideCfgFromEnv(cfg, protocol, name)
- switch protocol {
- case "mattermost":
- bridgeConfig.Config = cfg.Mattermost[name]
- b.Bridger = bmattermost.New(bridgeConfig)
- case "irc":
- bridgeConfig.Config = cfg.IRC[name]
- b.Bridger = birc.New(bridgeConfig)
- case "gitter":
- bridgeConfig.Config = cfg.Gitter[name]
- b.Bridger = bgitter.New(bridgeConfig)
- case "slack":
- bridgeConfig.Config = cfg.Slack[name]
- b.Bridger = bslack.New(bridgeConfig)
- case "xmpp":
- bridgeConfig.Config = cfg.Xmpp[name]
- b.Bridger = bxmpp.New(bridgeConfig)
- case "discord":
- bridgeConfig.Config = cfg.Discord[name]
- b.Bridger = bdiscord.New(bridgeConfig)
- case "telegram":
- bridgeConfig.Config = cfg.Telegram[name]
- b.Bridger = btelegram.New(bridgeConfig)
- case "rocketchat":
- bridgeConfig.Config = cfg.Rocketchat[name]
- b.Bridger = brocketchat.New(bridgeConfig)
- case "matrix":
- bridgeConfig.Config = cfg.Matrix[name]
- b.Bridger = bmatrix.New(bridgeConfig)
- case "steam":
- bridgeConfig.Config = cfg.Steam[name]
- b.Bridger = bsteam.New(bridgeConfig)
- case "sshchat":
- bridgeConfig.Config = cfg.Sshchat[name]
- b.Bridger = bsshchat.New(bridgeConfig)
- case "api":
- bridgeConfig.Config = cfg.Api[name]
- b.Bridger = api.New(bridgeConfig)
- }
- b.Config = bridgeConfig.Config
return b
}
@@ -106,7 +49,7 @@ func (b *Bridge) JoinChannels() error {
func (b *Bridge) joinChannels(channels map[string]config.ChannelInfo, exists map[string]bool) error {
for ID, channel := range channels {
if !exists[ID] {
- flog.Infof("%s: joining %s (ID: %s)", b.Account, channel.Name, ID)
+ b.Log.Infof("%s: joining %s (ID: %s)", b.Account, channel.Name, ID)
err := b.JoinChannel(channel)
if err != nil {
return err