| 69 | } |
| 70 | |
| 71 | func loadConfig() (cfg *ExchangeConfig, err error) { |
| 72 | _, err = conf.LoadConfig(configFile) |
| 73 | if err != nil { |
| 74 | log.WithError(err).Error("read cql config failed") |
| 75 | return |
| 76 | } |
| 77 | |
| 78 | var configBytes []byte |
| 79 | if configBytes, err = ioutil.ReadFile(configFile); err != nil { |
| 80 | log.WithError(err).Error("read config file failed") |
| 81 | return |
| 82 | } |
| 83 | |
| 84 | r := &struct { |
| 85 | Exchange *ExchangeConfig `json:"Exchange,omitempty" yaml:"Exchange,omitempty"` |
| 86 | }{} |
| 87 | if err = yaml.Unmarshal(configBytes, r); err != nil { |
| 88 | log.WithError(err).Error("unmarshal config file failed") |
| 89 | return |
| 90 | } |
| 91 | |
| 92 | if r.Exchange == nil { |
| 93 | err = errors.New("nil exchange config") |
| 94 | log.Error("could not read exchange config") |
| 95 | return |
| 96 | } |
| 97 | |
| 98 | validate := validator.New() |
| 99 | if err = validate.Struct(*r.Exchange); err != nil { |
| 100 | log.WithError(err).Error("validate config failed") |
| 101 | return |
| 102 | } |
| 103 | |
| 104 | cfg = r.Exchange |
| 105 | return |
| 106 | } |