5
0
mirror of https://github.com/cwinfo/matterbridge.git synced 2024-09-20 02:12:29 +00:00
matterbridge/gateway/samechannel/samechannel.go

52 lines
1.3 KiB
Go
Raw Normal View History

2016-09-30 21:19:47 +00:00
package samechannelgateway
import (
"github.com/42wim/matterbridge/bridge/config"
2017-02-17 21:08:30 +00:00
"github.com/42wim/matterbridge/gateway"
2016-09-30 21:19:47 +00:00
)
type SameChannelGateway struct {
*config.Config
2017-02-17 21:08:30 +00:00
MyConfig *config.SameChannelGateway
Channels []string
Name string
2016-09-30 21:19:47 +00:00
}
2017-02-17 21:08:30 +00: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 21:19:47 +00:00
}
2017-02-17 21:08:30 +00: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 21:19:47 +00:00
}
}
2017-02-17 21:08:30 +00:00
return gw.Start()
2016-09-30 21:19:47 +00:00
}
2017-02-17 21:08:30 +00:00
func (sgw *SameChannelGateway) validChannel(channel string) bool {
for _, c := range sgw.Channels {
if c == channel {
2017-01-21 20:00:40 +00:00
return true
}
}
return false
}
2017-03-28 21:56:58 +00:00
func (sgw *SameChannelGateway) getDestChannel(msg *config.Message, dest string) []config.ChannelInfo {
var channels []config.ChannelInfo
2017-02-17 21:08:30 +00:00
if sgw.validChannel(msg.Channel) {
2017-03-28 21:56:58 +00:00
channels = append(channels, config.ChannelInfo{Name: msg.Channel, Account: dest, ID: msg.Channel + dest})
return channels
}
2017-03-28 21:56:58 +00:00
return channels
}