diff --git a/main.go b/main.go index a7368b06a80e630d5faccf20055414ce0b4450c7..d850bd5f32c3f3b52b3cd7f3e745a8f4eb4d0f24 100644 --- a/main.go +++ b/main.go @@ -13,12 +13,32 @@ import ( ) type config struct { - Db bot.DbParams - Transport map[string]transportParams `yaml:"transports"` + Db bot.DbParams + Transports map[string]transportParams `yaml:"transports"` + Readers map[string]readerParams `yaml:"sites"` } +type readerParams map[string]interface{} type transportParams map[string]interface{} +func getReader(name string, config map[string]interface{}) site.Reader { + var err error + var reader site.Reader + + switch name { + case "youtube": + reader, err = site.NewYoutube(config["api_key"].(string)) + default: + log.Fatalf("Unsupported site '%s'", name) + } + + if err != nil { + log.Fatal(err) + } + + return reader +} + func startTransport(name string, config transportParams, factory bot.Factory) chan bool { transportType, ok := config["type"] if !ok { @@ -54,19 +74,18 @@ func main() { var config config err = yaml.Unmarshal(file, &config) + quit := make(map[string](chan bool)) + var readers []site.Reader - youtube, err := site.NewYoutube("AIzaSyD32EU9lb9cnNcEaSUBKCkKodk6rjl3HYc") - if err != nil { - log.Fatal(err) - } - readers := []site.Reader{ - //&site.Youtube{}, - youtube, + for name, readerCfg := range config.Readers { + reader := getReader(name, readerCfg) + readers = append(readers, reader) } + factory := bot.NewPlayBotFactory(config.Db, readers) - for name, config := range config.Transport { + for name, config := range config.Transports { c := startTransport(name, config, factory) quit[name] = c }