matterbridge/gateway/samechannel/samechannel.go

50 lines
1.2 KiB
Go
Raw Normal View History

2016-09-30 14:19:47 -07:00
package samechannelgateway
import (
"github.com/42wim/matterbridge/bridge/config"
2017-02-17 13:08:30 -08:00
"github.com/42wim/matterbridge/gateway"
2016-09-30 14:19:47 -07:00
)
type SameChannelGateway struct {
*config.Config
2017-02-17 13:08:30 -08:00
MyConfig *config.SameChannelGateway
Channels []string
Name string
2016-09-30 14:19:47 -07:00
}
2017-02-17 13:08:30 -08:00
func New(cfg *config.Config, gatewayCfg *config.SameChannelGateway) *SameChannelGateway {
return &SameChannelGateway{
MyConfig: gatewayCfg,
Channels: gatewayCfg.Channels,
Name: gatewayCfg.Name,
Config: cfg}
2016-09-30 14:19:47 -07:00
}
2017-02-17 13:08:30 -08:00
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)
2016-09-30 14:19:47 -07:00
}
}
2017-02-17 13:08:30 -08:00
return gw.Start()
2016-09-30 14:19:47 -07:00
}
2017-02-17 13:08:30 -08:00
func (sgw *SameChannelGateway) validChannel(channel string) bool {
for _, c := range sgw.Channels {
if c == channel {
2017-01-21 12:00:40 -08:00
return true
}
}
return false
}
2017-02-17 13:08:30 -08:00
func (sgw *SameChannelGateway) getDestChannel(msg *config.Message, dest string) []string {
if sgw.validChannel(msg.Channel) {
return []string{msg.Channel}
}
2017-02-17 13:08:30 -08:00
return []string{}
}