Browse Source

fix test break for TOML JSON convertion

Based on https://github.com/pelletier/go-toml/blob/352072d51afc24d769bd644d0ee25b5f77749fa7/cmd/tomljson/main.go#L56

Commit 0f7345ba76c7a91506ce3363f1c5301cbbc1f542 updated toml library version, however, the library have changed its check logic for input. This issue is now fixed.
Shelikhoo 4 years ago
parent
commit
f7ba3d0341
1 changed files with 21 additions and 5 deletions
  1. 21 5
      infra/conf/json/toml.go

+ 21 - 5
infra/conf/json/toml.go

@@ -1,20 +1,36 @@
 package json
 
 import (
+	"bytes"
 	"encoding/json"
+	"io"
 
 	"github.com/pelletier/go-toml"
 )
 
 // FromTOML convert toml to json
 func FromTOML(v []byte) ([]byte, error) {
-	m := make(map[string]interface{})
-	if err := toml.Unmarshal(v, &m); err != nil {
+	tomlReader := bytes.NewReader(v)
+	jsonStr, err := jsonFromTomlReader(tomlReader)
+	if err != nil {
 		return nil, err
 	}
-	j, err := json.Marshal(m)
+	return []byte(jsonStr), nil
+}
+
+func jsonFromTomlReader(r io.Reader) (string, error) {
+	tree, err := toml.LoadReader(r)
 	if err != nil {
-		return nil, err
+		return "", err
+	}
+	return mapToJSON(tree)
+}
+
+func mapToJSON(tree *toml.Tree) (string, error) {
+	treeMap := tree.ToMap()
+	bytes, err := json.MarshalIndent(treeMap, "", "  ")
+	if err != nil {
+		return "", err
 	}
-	return j, nil
+	return string(bytes[:]), nil
 }