texus/core/config.go
2024-12-02 14:03:35 +08:00

123 lines
3.5 KiB
Go

package core
import (
"fmt"
"io/ioutil"
"log"
"os"
"strings"
simple "github.com/bitly/go-simplejson"
)
type MyConfig struct {
Env string `json:"env", string`
Config *simple.Json
CandleDimentions []string `json:"candleDimentions"`
RedisConf *RedisConfig `json:"redis"`
CredentialReadOnlyConf *CredentialConfig `json:"credential"`
CredentialMutableConf *CredentialConfig `json:"credential"`
ConnectConf *ConnectConfig `json:"connect"`
// ThreadsConf *ThreadsConfig `json:"threads"`
}
type RedisConfig struct {
Url string `json:"url", string`
Password string `json:"password", string`
Index int `json:"index", string`
}
type CredentialConfig struct {
SecretKey string `json:"secretKey", string`
BaseUrl string `json:"baseUrl", string`
OkAccessKey string `json:"okAccessKey", string`
OkAccessPassphrase string `json:"okAccessPassphrase", string`
}
type ConnectConfig struct {
LoginSubUrl string `json:"loginSubUrl", string`
WsPrivateBaseUrl string `json:"wsPrivateBaseUrl", string`
WsPublicBaseUrl string `json:"wsPublicBaseUrl", string`
RestBaseUrl string `json:"restBaseUrl", string`
}
type ThreadsConfig struct {
MaxLenTickerStream int `json:"maxLenTickerStream", int`
MaxCandles int `json:"maxCandles", string`
AsyncChannels int `json:"asyncChannels", int`
MaxTickers int `json:"maxTickers", int`
RestPeriod int `json:"restPeriod", int`
WaitWs int `json:"waitWs", int`
}
func (cfg MyConfig) Init() (MyConfig, error) {
env := os.Getenv("GO_ENV")
arystr := os.Getenv("TUNAS_CANDLESDIMENTIONS")
ary := strings.Split(arystr, "|")
cfg.CandleDimentions = ary
jsonStr, err := ioutil.ReadFile("/go/json/basicConfig.json")
if err != nil {
jsonStr, err = ioutil.ReadFile("configs/basicConfig.json")
if err != nil {
fmt.Println("err2:", err.Error())
return cfg, err
}
cfg.Config, err = simple.NewJson([]byte(jsonStr))
if err != nil {
fmt.Println("err2:", err.Error())
return cfg, err
}
cfg.Env = env
}
cfg.Config = cfg.Config.Get(env)
ru, err := cfg.Config.Get("redis").Get("url").String()
rp, _ := cfg.Config.Get("redis").Get("password").String()
ri, _ := cfg.Config.Get("redis").Get("index").Int()
redisConf := RedisConfig{
Url: ru,
Password: rp,
Index: ri,
}
// fmt.Println("cfg: ", cfg)
cfg.RedisConf = &redisConf
ls, _ := cfg.Config.Get("connect").Get("loginSubUrl").String()
wsPub, _ := cfg.Config.Get("connect").Get("wsPrivateBaseUrl").String()
wsPri, _ := cfg.Config.Get("connect").Get("wsPublicBaseUrl").String()
restBu, _ := cfg.Config.Get("connect").Get("restBaseUrl").String()
connectConfig := ConnectConfig{
LoginSubUrl: ls,
WsPublicBaseUrl: wsPub,
WsPrivateBaseUrl: wsPri,
RestBaseUrl: restBu,
}
cfg.ConnectConf = &connectConfig
return cfg, nil
}
func (cfg *MyConfig) GetConfigJson(arr []string) *simple.Json {
env := os.Getenv("GO_ENV")
fmt.Println("env: ", env)
cfg.Env = env
json, err := ioutil.ReadFile("/go/json/basicConfig.json")
if err != nil {
json, err = ioutil.ReadFile("configs/basicConfig.json")
if err != nil {
log.Panic("read config error: ", err.Error())
}
}
if err != nil {
fmt.Println("read file err: ", err)
}
rjson, err := simple.NewJson(json)
if err != nil {
fmt.Println("newJson err: ", err)
}
for _, s := range arr {
rjson = rjson.Get(s)
// fmt.Println(s, ": ", rjson)
}
return rjson
}