/
feeer_json.go
88 lines (73 loc) · 2.05 KB
/
feeer_json.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
package currency
import (
"github.com/spikeekips/mitum/base"
jsonenc "github.com/spikeekips/mitum/util/encoder/json"
"github.com/spikeekips/mitum/util/hint"
)
func (fa NilFeeer) MarshalJSON() ([]byte, error) {
return jsonenc.Marshal(jsonenc.HintedHead{
H: fa.Hint(),
})
}
func (fa *NilFeeer) UnmarsahlJSON(b []byte) error {
var ht jsonenc.HintedHead
if err := jsonenc.Unmarshal(b, &ht); err != nil {
return err
}
fa.BaseHinter = hint.NewBaseHinter(ht.H)
return nil
}
type FixedFeeerJSONPacker struct {
jsonenc.HintedHead
RC base.Address `json:"receiver"`
AM Big `json:"amount"`
}
func (fa FixedFeeer) MarshalJSON() ([]byte, error) {
return jsonenc.Marshal(FixedFeeerJSONPacker{
HintedHead: jsonenc.NewHintedHead(fa.Hint()),
RC: fa.receiver,
AM: fa.amount,
})
}
type FixedFeeerJSONUnpacker struct {
HT hint.Hint `json:"_hint"`
RC base.AddressDecoder `json:"receiver"`
AM Big `json:"amount"`
}
func (fa *FixedFeeer) UnpackJSON(b []byte, enc *jsonenc.Encoder) error {
var ufa FixedFeeerJSONUnpacker
if err := enc.Unmarshal(b, &ufa); err != nil {
return err
}
return fa.unpack(enc, ufa.HT, ufa.RC, ufa.AM)
}
type RatioFeeerJSONPacker struct {
jsonenc.HintedHead
RC base.Address `json:"receiver"`
RA float64 `json:"ratio"`
MI Big `json:"min"`
MA Big `json:"max"`
}
func (fa RatioFeeer) MarshalJSON() ([]byte, error) {
return jsonenc.Marshal(RatioFeeerJSONPacker{
HintedHead: jsonenc.NewHintedHead(fa.Hint()),
RC: fa.receiver,
RA: fa.ratio,
MI: fa.min,
MA: fa.max,
})
}
type RatioFeeerJSONUnpacker struct {
HT hint.Hint `json:"_hint"`
RC base.AddressDecoder `json:"receiver"`
RA float64 `json:"ratio"`
MI Big `json:"min"`
MA Big `json:"max"`
}
func (fa *RatioFeeer) UnpackJSON(b []byte, enc *jsonenc.Encoder) error {
var ufa RatioFeeerJSONUnpacker
if err := enc.Unmarshal(b, &ufa); err != nil {
return err
}
return fa.unpack(enc, ufa.HT, ufa.RC, ufa.RA, ufa.MI, ufa.MA)
}