diff options
| author | Mistivia <i@mistivia.com> | 2025-11-02 15:27:18 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-11-02 15:27:18 +0800 |
| commit | e9c24f4af7ed56760f6db7941827d09f6db9020b (patch) | |
| tree | 62128c43b883ce5e3148113350978755779bb5de /teleirc/matterbridge/gateway/samechannel | |
| parent | 58d5e7cfda4781d8a57ec52aefd02983835c301a (diff) | |
add matterbridge
Diffstat (limited to 'teleirc/matterbridge/gateway/samechannel')
| -rw-r--r-- | teleirc/matterbridge/gateway/samechannel/samechannel.go | 28 | ||||
| -rw-r--r-- | teleirc/matterbridge/gateway/samechannel/samechannel_test.go | 77 |
2 files changed, 105 insertions, 0 deletions
diff --git a/teleirc/matterbridge/gateway/samechannel/samechannel.go b/teleirc/matterbridge/gateway/samechannel/samechannel.go new file mode 100644 index 0000000..4b6016c --- /dev/null +++ b/teleirc/matterbridge/gateway/samechannel/samechannel.go @@ -0,0 +1,28 @@ +package samechannel + +import ( + "github.com/42wim/matterbridge/bridge/config" +) + +type SameChannelGateway struct { + config.Config +} + +func New(cfg config.Config) *SameChannelGateway { + return &SameChannelGateway{Config: cfg} +} + +func (sgw *SameChannelGateway) GetConfig() []config.Gateway { + var gwconfigs []config.Gateway + cfg := sgw.Config + for _, gw := range cfg.BridgeValues().SameChannelGateway { + gwconfig := config.Gateway{Name: gw.Name, Enable: gw.Enable} + for _, account := range gw.Accounts { + for _, channel := range gw.Channels { + gwconfig.InOut = append(gwconfig.InOut, config.Bridge{Account: account, Channel: channel, SameChannel: true}) + } + } + gwconfigs = append(gwconfigs, gwconfig) + } + return gwconfigs +} diff --git a/teleirc/matterbridge/gateway/samechannel/samechannel_test.go b/teleirc/matterbridge/gateway/samechannel/samechannel_test.go new file mode 100644 index 0000000..17d816a --- /dev/null +++ b/teleirc/matterbridge/gateway/samechannel/samechannel_test.go @@ -0,0 +1,77 @@ +package samechannel + +import ( + "io/ioutil" + "testing" + + "github.com/42wim/matterbridge/bridge/config" + "github.com/sirupsen/logrus" + "github.com/stretchr/testify/assert" +) + +const testConfig = ` +[mattermost.test] +[slack.test] + +[[samechannelgateway]] + enable = true + name = "blah" + accounts = [ "mattermost.test","slack.test" ] + channels = [ "testing","testing2","testing10"] +` + +var ( + expectedConfig = config.Gateway{ + Name: "blah", + Enable: true, + In: []config.Bridge(nil), + Out: []config.Bridge(nil), + InOut: []config.Bridge{ + { + Account: "mattermost.test", + Channel: "testing", + Options: config.ChannelOptions{Key: ""}, + SameChannel: true, + }, + { + Account: "mattermost.test", + Channel: "testing2", + Options: config.ChannelOptions{Key: ""}, + SameChannel: true, + }, + { + Account: "mattermost.test", + Channel: "testing10", + Options: config.ChannelOptions{Key: ""}, + SameChannel: true, + }, + { + Account: "slack.test", + Channel: "testing", + Options: config.ChannelOptions{Key: ""}, + SameChannel: true, + }, + { + Account: "slack.test", + Channel: "testing2", + Options: config.ChannelOptions{Key: ""}, + SameChannel: true, + }, + { + Account: "slack.test", + Channel: "testing10", + Options: config.ChannelOptions{Key: ""}, + SameChannel: true, + }, + }, + } +) + +func TestGetConfig(t *testing.T) { + logger := logrus.New() + logger.SetOutput(ioutil.Discard) + cfg := config.NewConfigFromString(logger, []byte(testConfig)) + sgw := New(cfg) + configs := sgw.GetConfig() + assert.Equal(t, []config.Gateway{expectedConfig}, configs) +} |
