OSDN Git Service

sync vote info for reward (#292)
[bytom/vapor.git] / toolbar / reward / config / config.go
index d912156..95ed77a 100644 (file)
@@ -1 +1,46 @@
 package config
+
+import (
+       "encoding/json"
+       "os"
+
+       log "github.com/sirupsen/logrus"
+
+       "github.com/vapor/crypto/ed25519/chainkd"
+       "github.com/vapor/toolbar/common"
+)
+
+func NewConfig() *Config {
+       if len(os.Args) <= 1 {
+               log.Fatal("Please setup the config file path")
+       }
+
+       return NewConfigWithPath(os.Args[1])
+}
+
+func NewConfigWithPath(path string) *Config {
+       configFile, err := os.Open(path)
+       if err != nil {
+               log.WithFields(log.Fields{"err": err, "file_path": os.Args[1]}).Fatal("fail to open config file")
+       }
+       defer configFile.Close()
+
+       cfg := &Config{}
+       if err := json.NewDecoder(configFile).Decode(cfg); err != nil {
+               log.WithField("err", err).Fatal("fail to decode config file")
+       }
+
+       return cfg
+}
+
+type Config struct {
+       MySQLConfig common.MySQLConfig `json:"mysql"`
+       Chain       Chain              `json:"chain"`
+       XPubs       []chainkd.XPub     `json:"xpubs"`
+}
+
+type Chain struct {
+       Name        string `json:"name"`
+       Upstream    string `json:"upstream"`
+       SyncSeconds uint64 `json:"sync_seconds"`
+}