/
extensions.go
52 lines (40 loc) · 1.06 KB
/
extensions.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
package types
//go:generate ffjson $GOFILE
import (
"github.com/pquerna/ffjson/ffjson"
"github.com/denkhaus/bitshares/util"
"github.com/juju/errors"
)
type Extensions struct {
ext interface{}
}
//TODO refactor and test
func (p Extensions) Marshal(enc *util.TypeEncoder) error {
if err := enc.EncodeUVarint(uint64(0)); err != nil {
return errors.Annotate(err, "encode length")
}
// for _, ex := range p {
// if err := enc.Encode(ex); err != nil {
// return errors.Annotate(err, "encode Extension")
// }
// }
// if err := enc.EncodeUVarint(uint64(len(p))); err != nil {
// return errors.Annotate(err, "encode length")
// }
// for _, ex := range p {
// if err := enc.Encode(ex); err != nil {
// return errors.Annotate(err, "encode Extension")
// }
// }
return nil
}
func (p Extensions) MarshalJSON() ([]byte, error) {
if p.ext == nil {
p.ext = make([]interface{}, 0)
}
return ffjson.Marshal(p.ext)
}
// UnmarshalJSON sets *m to a copy of data.
func (p *Extensions) UnmarshalJSON(data []byte) error {
return ffjson.Unmarshal(data, &p.ext)
}