github.com/trezor/blockbook@v0.4.1-0.20240328132726-e9a08582ee2c/common/config.go (about)

     1  package common
     2  
     3  import (
     4  	"encoding/json"
     5  	"os"
     6  
     7  	"github.com/juju/errors"
     8  )
     9  
    10  // Config struct
    11  type Config struct {
    12  	CoinName                string `json:"coin_name"`
    13  	CoinShortcut            string `json:"coin_shortcut"`
    14  	CoinLabel               string `json:"coin_label"`
    15  	FourByteSignatures      string `json:"fourByteSignatures"`
    16  	FiatRates               string `json:"fiat_rates"`
    17  	FiatRatesParams         string `json:"fiat_rates_params"`
    18  	FiatRatesVsCurrencies   string `json:"fiat_rates_vs_currencies"`
    19  	BlockGolombFilterP      uint8  `json:"block_golomb_filter_p"`
    20  	BlockFilterScripts      string `json:"block_filter_scripts"`
    21  	BlockFilterUseZeroedKey bool   `json:"block_filter_use_zeroed_key"`
    22  }
    23  
    24  // GetConfig loads and parses the config file and returns Config struct
    25  func GetConfig(configFile string) (*Config, error) {
    26  	if configFile == "" {
    27  		return nil, errors.New("Missing blockchaincfg configuration parameter")
    28  	}
    29  
    30  	configFileContent, err := os.ReadFile(configFile)
    31  	if err != nil {
    32  		return nil, errors.Errorf("Error reading file %v, %v", configFile, err)
    33  	}
    34  
    35  	var cn Config
    36  	err = json.Unmarshal(configFileContent, &cn)
    37  	if err != nil {
    38  		return nil, errors.Annotatef(err, "Error parsing config file ")
    39  	}
    40  	return &cn, nil
    41  }