This repository has been archived by the owner on Dec 21, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
/
utils.go
74 lines (60 loc) · 2.48 KB
/
utils.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
package utils
import (
"github.com/MinterTeam/mhub/chain/x/peggy/types"
"io/ioutil"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/rest"
)
type (
// ColdStorageTransfersJSON defines a slice of ColdStorageTransferJSON objects which can be
// converted to a slice of ColdStorageTransfer objects.
ColdStorageTransfersJSON []ColdStorageTransferJSON
// ColdStorageTransferJSON defines a parameter change used in JSON input. This
// allows values to be specified in raw JSON instead of being string encoded.
ColdStorageTransferJSON struct {
Amount sdk.Coins `json:"amount" yaml:"amount"`
}
// ColdStorageTransferProposalJSON defines a ParameterChangeProposal with a deposit used
// to parse parameter change proposals from a JSON file.
ColdStorageTransferProposalJSON struct {
Amount sdk.Coins `json:"amount" yaml:"amount"`
Deposit string `json:"deposit" yaml:"deposit"`
}
// ColdStorageTransferProposalReq defines a parameter change proposal request body.
ColdStorageTransferProposalReq struct {
BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"`
Amount sdk.Coins `json:"amount" yaml:"amount"`
Proposer sdk.AccAddress `json:"proposer" yaml:"proposer"`
Deposit sdk.Coins `json:"deposit" yaml:"deposit"`
}
)
func NewColdStorageTransferJSON(amount sdk.Coins) ColdStorageTransferJSON {
return ColdStorageTransferJSON{amount}
}
// ToColdStorageTransfer converts a ColdStorageTransferJSON object to ColdStorageTransfer.
func (pcj ColdStorageTransferJSON) ToColdStorageTransfer() types.ColdStorageTransferProposal {
return *types.NewColdStorageTransferProposal(pcj.Amount)
}
// ToColdStorageTransfers converts a slice of ColdStorageTransferJSON objects to a slice of
// ColdStorageTransfer.
func (pcj ColdStorageTransfersJSON) ToColdStorageTransfers() []types.ColdStorageTransferProposal {
res := make([]types.ColdStorageTransferProposal, len(pcj))
for i, pc := range pcj {
res[i] = pc.ToColdStorageTransfer()
}
return res
}
// ParseColdStorageTransferProposalJSON reads and parses a ColdStorageTransferProposalJSON from
// file.
func ParseColdStorageTransferProposalJSON(cdc *codec.LegacyAmino, proposalFile string) (ColdStorageTransferProposalJSON, error) {
proposal := ColdStorageTransferProposalJSON{}
contents, err := ioutil.ReadFile(proposalFile)
if err != nil {
return proposal, err
}
if err := cdc.UnmarshalJSON(contents, &proposal); err != nil {
return proposal, err
}
return proposal, nil
}