Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit 634f372942c9c8e82aa1ab94de5aaa2d58289824 Author: Patrick Connolly <patrick.c.connolly@gmail.com> Date: Sat Dec 01 06:53:00 2018 +0000 Extract bridgeMap into own package to improve testability (#601) diff --git a/gateway/bridgemap/bridgemap.go b/gateway/bridgemap/bridgemap.go new file mode 100644 index 0000000..20577dc --- /dev/null +++ b/gateway/bridgemap/bridgemap.go @@ -00 +135 @@ +package bridgemap + +import ( + "github.com/42wim/matterbridge/bridge" + "github.com/42wim/matterbridge/bridge/api" + "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" + "github.com/42wim/matterbridge/bridge/zulip" +) + +var FullMap = map[string]bridge.Factory{ + "api": api.New, + "discord": bdiscord.New, + "gitter": bgitter.New, + "irc": birc.New, + "mattermost": bmattermost.New, + "matrix": bmatrix.New, + "rocketchat": brocketchat.New, + "slack-legacy": bslack.NewLegacy, + "slack": bslack.New, + "sshchat": bsshchat.New, + "steam": bsteam.New, + "telegram": btelegram.New, + "xmpp": bxmpp.New, + "zulip": bzulip.New, +} diff --git a/gateway/gateway.go b/gateway/gateway.go index 2b8bdfa..674179f 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -1320 +137 @@ import (   "time"     "github.com/42wim/matterbridge/bridge" - "github.com/42wim/matterbridge/bridge/api"   "github.com/42wim/matterbridge/bridge/config" - bdiscord "github.com/42wim/matterbridge/bridge/discord" - bgitter "github.com/42wim/matterbridge/bridge/gitter" - birc "github.com/42wim/matterbridge/bridge/irc" - bmatrix "github.com/42wim/matterbridge/bridge/matrix" - bmattermost "github.com/42wim/matterbridge/bridge/mattermost" - brocketchat "github.com/42wim/matterbridge/bridge/rocketchat" - bslack "github.com/42wim/matterbridge/bridge/slack" - bsshchat "github.com/42wim/matterbridge/bridge/sshchat" - bsteam "github.com/42wim/matterbridge/bridge/steam" - btelegram "github.com/42wim/matterbridge/bridge/telegram" - bxmpp "github.com/42wim/matterbridge/bridge/xmpp" - bzulip "github.com/42wim/matterbridge/bridge/zulip"   "github.com/hashicorp/golang-lru"   "github.com/peterhellberg/emojilib"   log "github.com/sirupsen/logrus" @@ -5323 +406 @@ type BrMsgID struct {    var flog *log.Entry   -var bridgeMap = map[string]bridge.Factory{ - "api": api.New, - "discord": bdiscord.New, - "gitter": bgitter.New, - "irc": birc.New, - "mattermost": bmattermost.New, - "matrix": bmatrix.New, - "rocketchat": brocketchat.New, - "slack-legacy": bslack.NewLegacy, - "slack": bslack.New, - "sshchat": bsshchat.New, - "steam": bsteam.New, - "telegram": btelegram.New, - "xmpp": bxmpp.New, - "zulip": bzulip.New, -} -  const (   apiProtocol = "api"  ) @@ -1147 +847 @@ func (gw *Gateway) AddBridge(cfg *config.Bridge) error {   br.Log = log.WithFields(log.Fields{"prefix": "bridge"})   brconfig := &bridge.Config{Remote: gw.Message, Log: log.WithFields(log.Fields{"prefix": br.Protocol}), Bridge: br}   // add the actual bridger for this protocol to this bridge using the bridgeMap - br.Bridger = bridgeMap[br.Protocol](brconfig) + br.Bridger = gw.Router.BridgeMap[br.Protocol](brconfig)   }   gw.mapChannelsToBridge(br)   gw.Bridges[cfg.Account] = br diff --git a/gateway/gateway_test.go b/gateway/gateway_test.go index e7b77bf..798b30c 100644 --- a/gateway/gateway_test.go +++ b/gateway/gateway_test.go @@ -56 +57 @@ import (   "strconv"     "github.com/42wim/matterbridge/bridge/config" + "github.com/42wim/matterbridge/gateway/bridgemap"   "github.com/stretchr/testify/assert"     "testing" @@ -1607 +1617 @@ const (    func maketestRouter(input []byte) *Router {   cfg := config.NewConfigFromString(input) - r, err := NewRouter(cfg) + r, err := NewRouter(cfg, bridgemap.FullMap)   if err != nil {   fmt.Println(err)   } diff --git a/gateway/router.go b/gateway/router.go index 13e8ddd..e4478d8 100644 --- a/gateway/router.go +++ b/gateway/router.go @@ -1214 +1216 @@ import (  type Router struct {   config.Config   + BridgeMap map[string]bridge.Factory   Gateways map[string]*Gateway   Message chan config.Message   MattermostPlugin chan config.Message  }   -func NewRouter(cfg config.Config) (*Router, error) { +func NewRouter(cfg config.Config, bridgeMap map[string]bridge.Factory) (*Router, error) {   r := &Router{   Config: cfg, + BridgeMap: bridgeMap,   Message: make(chan config.Message),   MattermostPlugin: make(chan config.Message),   Gateways: make(map[string]*Gateway), diff --git a/matterbridge.go b/matterbridge.go index df0918b..81af86d 100644 --- a/matterbridge.go +++ b/matterbridge.go @@ -86 +87 @@ import (     "github.com/42wim/matterbridge/bridge/config"   "github.com/42wim/matterbridge/gateway" + "github.com/42wim/matterbridge/gateway/bridgemap"   "github.com/google/gops/agent"   prefixed "github.com/matterbridge/logrus-prefixed-formatter"   log "github.com/sirupsen/logrus" @@ -457 +467 @@ func main() {   }   cfg := config.NewConfig(*flagConfig)   cfg.BridgeValues().General.Debug = *flagDebug - r, err := gateway.NewRouter(cfg) + r, err := gateway.NewRouter(cfg, bridgemap.FullMap)   if err != nil {   flog.Fatalf("Starting gateway failed: %s", err)   }