package samechannelgateway import ( "github.com/42wim/matterbridge/bridge/config" "github.com/42wim/matterbridge/gateway" ) type SameChannelGateway struct { *config.Config MyConfig *config.SameChannelGateway Channels []string Name string } func New(cfg *config.Config, gatewayCfg *config.SameChannelGateway) *SameChannelGateway { return &SameChannelGateway{ MyConfig: gatewayCfg, Channels: gatewayCfg.Channels, Name: gatewayCfg.Name, Config: cfg} } func (sgw *SameChannelGateway) Start() error { gw := gateway.New(sgw.Config, &config.Gateway{Name: sgw.Name}) gw.DestChannelFunc = sgw.getDestChannel for _, account := range sgw.MyConfig.Accounts { for _, channel := range sgw.Channels { br := config.Bridge{Account: account, Channel: channel} gw.MyConfig.InOut = append(gw.MyConfig.InOut, br) } } return gw.Start() } func (sgw *SameChannelGateway) validChannel(channel string) bool { for _, c := range sgw.Channels { if c == channel { return true } } return false } func (sgw *SameChannelGateway) getDestChannel(msg *config.Message, dest string) []string { if sgw.validChannel(msg.Channel) { return []string{msg.Channel} } return []string{} }