config.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package application
  2. import (
  3. "encoding/json"
  4. "git.sxidc.com/go-tools/utils/fileutils"
  5. "git.sxidc.com/service-supports/fserr"
  6. "gopkg.in/yaml.v3"
  7. "os"
  8. )
  9. type Config struct {
  10. ApiConfig `json:"api" yaml:"api"`
  11. }
  12. type ApiConfig struct {
  13. UrlPrefix string `json:"url_prefix" yaml:"url_prefix"`
  14. Port string `json:"port" yaml:"port"`
  15. }
  16. func LoadFromJsonFile(jsonFilePath string) (Config, error) {
  17. if !fileutils.PathExists(jsonFilePath) {
  18. return Config{}, fserr.New("配置文件不存在")
  19. }
  20. jsonBytes, err := os.ReadFile(jsonFilePath)
  21. if err != nil {
  22. return Config{}, err
  23. }
  24. return loadFromJson(jsonBytes)
  25. }
  26. func LoadFromYamlFile(yamlFilePath string) (Config, error) {
  27. if !fileutils.PathExists(yamlFilePath) {
  28. return Config{}, fserr.New("配置文件不存在")
  29. }
  30. yamlBytes, err := os.ReadFile(yamlFilePath)
  31. if err != nil {
  32. return Config{}, err
  33. }
  34. return loadFromYaml(yamlBytes)
  35. }
  36. func LoadFromJson(jsonStr string) (Config, error) {
  37. return loadFromJson([]byte(jsonStr))
  38. }
  39. func LoadFromYaml(yamlStr string) (Config, error) {
  40. return loadFromYaml([]byte(yamlStr))
  41. }
  42. func loadFromJson(jsonBytes []byte) (Config, error) {
  43. conf := new(Config)
  44. err := json.Unmarshal(jsonBytes, conf)
  45. if err != nil {
  46. return Config{}, err
  47. }
  48. return *conf, nil
  49. }
  50. func loadFromYaml(yamlBytes []byte) (Config, error) {
  51. conf := new(Config)
  52. err := yaml.Unmarshal(yamlBytes, conf)
  53. if err != nil {
  54. return Config{}, err
  55. }
  56. return *conf, nil
  57. }