diff --git a/pkg/nodeutils/base64_map.go b/pkg/nodeutils/base64_map.go new file mode 100644 index 0000000..061c22d --- /dev/null +++ b/pkg/nodeutils/base64_map.go @@ -0,0 +1,37 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package nodeutils + +import ( + "encoding/base64" + "encoding/json" + "github.com/iwind/TeaGo/maps" +) + +// Base64EncodeMap 对Map进行Base64编码 +func Base64EncodeMap(m maps.Map) (string, error) { + if m == nil { + m = maps.Map{} + } + data, err := json.Marshal(m) + if err != nil { + return "", err + } + var result = base64.StdEncoding.EncodeToString(data) + return result, nil +} + +// Base64DecodeMap 对Map进行Base64解码 +func Base64DecodeMap(encodedString string) (maps.Map, error) { + data, err := base64.StdEncoding.DecodeString(encodedString) + if err != nil { + return nil, err + } + + var result = maps.Map{} + err = json.Unmarshal(data, &result) + if err != nil { + return nil, err + } + return result, nil +} diff --git a/pkg/nodeutils/base64_map_test.go b/pkg/nodeutils/base64_map_test.go new file mode 100644 index 0000000..9d0efb1 --- /dev/null +++ b/pkg/nodeutils/base64_map_test.go @@ -0,0 +1,55 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package nodeutils + +import ( + "github.com/iwind/TeaGo/maps" + "testing" +) + +func TestBase64EncodeMap(t *testing.T) { + { + var m maps.Map + encodedString, err := Base64EncodeMap(m) + if err != nil { + t.Fatal(err) + } + t.Log("encoded string:", encodedString) + + m, err = Base64DecodeMap(encodedString) + if err != nil { + t.Fatal(err) + } + t.Logf("%#v", m) + } + + { + var m = maps.Map{} + encodedString, err := Base64EncodeMap(m) + if err != nil { + t.Fatal(err) + } + t.Log("encoded string:", encodedString) + + m, err = Base64DecodeMap(encodedString) + if err != nil { + t.Fatal(err) + } + t.Logf("%#v", m) + } + + { + var m = maps.Map{"userId": 1, "name": "李白"} + encodedString, err := Base64EncodeMap(m) + if err != nil { + t.Fatal(err) + } + t.Log("encoded string:", encodedString) + + m, err = Base64DecodeMap(encodedString) + if err != nil { + t.Fatal(err) + } + t.Logf("%#v", m) + } +}