diff options
author | Wim <wim@42.be> | 2018-02-27 00:33:21 +0100 |
---|---|---|
committer | Wim <wim@42.be> | 2018-02-27 23:22:12 +0100 |
commit | 2bac8673829516d8314c459133e85a8c0cc1959c (patch) | |
tree | ed4123232727f9c53c685b1687725206f0b02cb6 /bridge/bridge.go | |
parent | 5fbd8a3be05cdecdde515ad459b7a5d87b056956 (diff) | |
download | matterbridge-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.go | 67 |
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 |