-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
conv_encoding.go
90 lines (75 loc) · 3.17 KB
/
conv_encoding.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package converter
import (
"bytes"
"encoding/base32"
"encoding/base64"
"encoding/csv"
"encoding/hex"
"encoding/json"
"encoding/xml"
"strings"
"github.com/BurntSushi/toml"
)
func init() {
RegisterConverter(NewConverter("base64-encode").SetTypes("[]byte", "string").SetConversionFunc(ConvertBytesToBase64))
RegisterConverter(NewConverter("base64-decode").SetTypes("string", "[]byte").SetConversionFunc(ConvertBase64ToBytes))
RegisterConverter(NewConverter("base32-encode").SetTypes("[]byte", "string").SetConversionFunc(ConvertBytesToBase32))
RegisterConverter(NewConverter("base32-decode").SetTypes("string", "[]byte").SetConversionFunc(ConvertBase32ToBytes))
RegisterConverter(NewConverter("hex-encode").SetTypes("[]byte", "string").SetConversionFunc(ConvertBytesToHex))
RegisterConverter(NewConverter("hex-decode").SetTypes("string", "[]byte").SetConversionFunc(ConvertHexToBytes))
RegisterConverter(NewConverter("xml-encode").SetTypes("interface{}", "[]byte").SetConversionFunc(ConvertStructToXml))
RegisterConverter(NewConverter("xml-decode").SetTypes("[]byte", "interface{}").SetConversionFunc(ConvertXmlToStruct))
RegisterConverter(NewConverter("json-encode").SetTypes("interface{}", "[]byte").SetConversionFunc(ConvertStructToJson))
RegisterConverter(NewConverter("json-decode").SetTypes("[]byte", "interface{}").SetConversionFunc(ConvertJsonToStruct))
RegisterConverter(NewConverter("toml-encode").SetTypes("[]byte", "interface{}").SetConversionFunc(ConvertStructToToml))
RegisterConverter(NewConverter("csv-decode").SetTypes("string", "[][]string").SetConversionFunc(ConvertStringToCsv))
}
func ConvertBytesToBase64(in interface{}, out *interface{}) error {
*out = base64.StdEncoding.EncodeToString(in.([]byte))
return nil
}
func ConvertBase64ToBytes(in interface{}, out *interface{}) (err error) {
*out, err = base64.StdEncoding.DecodeString(in.(string))
return err
}
func ConvertBytesToBase32(in interface{}, out *interface{}) error {
*out = base32.StdEncoding.EncodeToString(in.([]byte))
return nil
}
func ConvertBase32ToBytes(in interface{}, out *interface{}) (err error) {
*out, err = base32.StdEncoding.DecodeString(in.(string))
return err
}
func ConvertBytesToHex(in interface{}, out *interface{}) error {
*out = hex.EncodeToString(in.([]byte))
return nil
}
func ConvertHexToBytes(in interface{}, out *interface{}) (err error) {
*out, err = hex.DecodeString(in.(string))
return err
}
func ConvertXmlToStruct(in interface{}, out *interface{}) (err error) {
return xml.Unmarshal(in.([]byte), out)
}
func ConvertStructToXml(in interface{}, out *interface{}) (err error) {
*out, err = xml.Marshal(in)
return err
}
func ConvertJsonToStruct(in interface{}, out *interface{}) (err error) {
return json.Unmarshal(in.([]byte), out)
}
func ConvertStructToJson(in interface{}, out *interface{}) (err error) {
*out, err = json.Marshal(in)
return err
}
func ConvertStructToToml(in interface{}, out *interface{}) (err error) {
buf := new(bytes.Buffer)
err = toml.NewEncoder(buf).Encode(in)
*out = buf.Bytes()
return err
}
func ConvertStringToCsv(in interface{}, out *interface{}) (err error) {
r := csv.NewReader(strings.NewReader(in.(string)))
*out, err = r.ReadAll()
return err
}