diff --git a/bridge/bridge.go b/bridge/bridge.go index 8135cabf..0436eeb6 100644 --- a/bridge/bridge.go +++ b/bridge/bridge.go @@ -68,12 +68,8 @@ func (b *Bridge) joinChannels(channels map[string]config.ChannelInfo, exists map return nil } -func (b *Bridge) ReloadConfig() { - return -} - func (b *Bridge) GetBool(key string) bool { - if b.Config.GetBool(b.Account+"."+key) != false { + if b.Config.GetBool(b.Account + "." + key) { return b.Config.GetBool(b.Account + "." + key) } return b.Config.GetBool("general." + key) diff --git a/bridge/config/config.go b/bridge/config/config.go index a89f9aa7..42a87f1c 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -1,6 +1,7 @@ package config import ( + "bytes" log "github.com/sirupsen/logrus" "github.com/spf13/viper" "os" @@ -192,6 +193,23 @@ func NewConfig(cfgfile string) *Config { return mycfg } +func NewConfigFromString(input []byte) *Config { + var cfg ConfigValues + viper.SetConfigType("toml") + err := viper.ReadConfig(bytes.NewBuffer(input)) + if err != nil { + log.Fatal(err) + } + err = viper.Unmarshal(&cfg) + if err != nil { + log.Fatal(err) + } + mycfg := new(Config) + mycfg.v = viper.GetViper() + mycfg.ConfigValues = &cfg + return mycfg +} + func (c *Config) GetBool(key string) bool { c.RLock() defer c.RUnlock() diff --git a/gateway/gateway.go b/gateway/gateway.go index a637dcf7..694fa95b 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -23,7 +23,6 @@ import ( "github.com/hashicorp/golang-lru" "github.com/peterhellberg/emojilib" "net/http" - "reflect" "regexp" "strings" "time" @@ -450,14 +449,6 @@ func getChannelID(msg config.Message) string { return msg.Channel + msg.Account } -//getField returns the Protocol configuration for a specific protocol (field) -func getField(cfg *config.Config, field string) map[string]config.Protocol { - r := reflect.ValueOf(cfg) - f := reflect.Indirect(r).FieldByName(field) - i := f.Interface() - return i.(map[string]config.Protocol) -} - func isApi(account string) bool { return strings.HasPrefix(account, "api.") } diff --git a/gateway/gateway_test.go b/gateway/gateway_test.go index 76faa890..25242177 100644 --- a/gateway/gateway_test.go +++ b/gateway/gateway_test.go @@ -3,14 +3,13 @@ package gateway import ( "fmt" "github.com/42wim/matterbridge/bridge/config" - "github.com/BurntSushi/toml" "github.com/stretchr/testify/assert" "strconv" "testing" ) -var testconfig = ` +var testconfig = []byte(` [irc.freenode] [mattermost.test] [gitter.42wim] @@ -37,9 +36,9 @@ var testconfig = ` [[gateway.inout]] account="slack.test" channel="testing" - ` + `) -var testconfig2 = ` +var testconfig2 = []byte(` [irc.freenode] [mattermost.test] [gitter.42wim] @@ -80,8 +79,9 @@ var testconfig2 = ` [[gateway.out]] account = "discord.test" channel = "general2" - ` -var testconfig3 = ` + `) + +var testconfig3 = []byte(` [irc.zzz] [telegram.zzz] [slack.zzz] @@ -149,13 +149,10 @@ enable=true [[gateway.inout]] account="telegram.zzz" channel="--333333333333" -` +`) -func maketestRouter(input string) *Router { - var cfg *config.Config - if _, err := toml.Decode(input, &cfg); err != nil { - fmt.Println(err) - } +func maketestRouter(input []byte) *Router { + cfg := config.NewConfigFromString(input) r, err := NewRouter(cfg) if err != nil { fmt.Println(err) @@ -163,14 +160,7 @@ func maketestRouter(input string) *Router { return r } func TestNewRouter(t *testing.T) { - var cfg *config.Config - if _, err := toml.Decode(testconfig, &cfg); err != nil { - fmt.Println(err) - } - r, err := NewRouter(cfg) - if err != nil { - fmt.Println(err) - } + r := maketestRouter(testconfig) assert.Equal(t, 1, len(r.Gateways)) assert.Equal(t, 4, len(r.Gateways["bridge1"].Bridges)) assert.Equal(t, 4, len(r.Gateways["bridge1"].Channels))