github.com/0chain/gosdk@v1.17.11/core/conf/network.go (about) 1 package conf 2 3 import ( 4 "errors" 5 "os" 6 7 thrown "github.com/0chain/errors" 8 "github.com/0chain/gosdk/core/sys" 9 "github.com/spf13/viper" 10 ) 11 12 // Network settings from ~/.zcn/network.yaml 13 type Network struct { 14 // Sharders sharder list of blockchain 15 Sharders []string 16 // Miners miner list of blockchain 17 Miners []string 18 } 19 20 // IsValid check network if it has miners and sharders 21 func (n *Network) IsValid() bool { 22 return n != nil && len(n.Miners) > 0 && len(n.Sharders) > 0 23 } 24 25 // LoadNetworkFile load and parse Network from file 26 // - file is the path of the file (full path) 27 func LoadNetworkFile(file string) (Network, error) { 28 29 var network Network 30 var err error 31 32 _, err = sys.Files.Stat(file) 33 34 if err != nil { 35 if errors.Is(err, os.ErrNotExist) { 36 return network, thrown.Throw(ErrMssingConfig, file) 37 } 38 return network, err 39 } 40 41 v := viper.New() 42 43 v.SetConfigFile(file) 44 45 if err := v.ReadInConfig(); err != nil { 46 return network, thrown.Throw(ErrBadParsing, err.Error()) 47 } 48 49 return LoadNetwork(v), nil 50 } 51 52 // LoadNetwork load and parse network 53 func LoadNetwork(v Reader) Network { 54 return Network{ 55 Sharders: v.GetStringSlice("sharders"), 56 Miners: v.GetStringSlice("miners"), 57 } 58 }