-
Notifications
You must be signed in to change notification settings - Fork 46
/
pack-type.go
86 lines (74 loc) · 1.58 KB
/
pack-type.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
package tcpx
import (
"encoding/json"
"encoding/xml"
"github.com/fwhezfwhez/errorx"
"google.golang.org/protobuf/proto"
"gopkg.in/yaml.v2"
)
// PackType requires buffer message marshalled by tcpx.Pack
type PackType []byte
func (pt *PackType) BindJSON(dest interface{}) error {
body, e := BodyBytesOf(*pt)
if e != nil {
return errorx.Wrap(e)
}
if e := json.Unmarshal(body, dest); e != nil {
return errorx.Wrap(e)
}
return nil
}
func (pt *PackType) BindProtobuf(dest proto.Message) error {
body, e := BodyBytesOf(*pt)
if e != nil {
return errorx.Wrap(e)
}
if e := proto.Unmarshal(body, dest); e != nil {
return errorx.Wrap(e)
}
return nil
}
func (pt *PackType) BindTOML(dest interface{}) error {
body, e := BodyBytesOf(*pt)
if e != nil {
return errorx.Wrap(e)
}
if e := UnmarshalTOML(body, dest); e != nil {
return errorx.Wrap(e)
}
return nil
}
func (pt *PackType) BindYAML(dest interface{}) error {
body, e := BodyBytesOf(*pt)
if e != nil {
return errorx.Wrap(e)
}
if e := yaml.Unmarshal(body, dest); e != nil {
return errorx.Wrap(e)
}
return nil
}
func (pt *PackType) BindXML(dest interface{}) error {
body, e := BodyBytesOf(*pt)
if e != nil {
return errorx.Wrap(e)
}
if e := xml.Unmarshal(body, dest); e != nil {
return errorx.Wrap(e)
}
return nil
}
func (pt *PackType) URLPattern() (string, error) {
urlPattern, e := URLPatternOf(*pt)
if e != nil {
return "", errorx.Wrap(e)
}
return urlPattern, nil
}
func (pt *PackType) MessageID() (int32, error) {
msid, e := MessageIDOf(*pt)
if e != nil {
return msid, errorx.Wrap(e)
}
return msid, nil
}