github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/params/client/utils/utils.go (about) 1 package utils 2 3 import ( 4 "encoding/json" 5 "io/ioutil" 6 7 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 8 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/rest" 10 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/params" 11 ) 12 13 type ( 14 // ParamChangesJSON defines a slice of ParamChangeJSON objects which can be 15 // converted to a slice of ParamChange objects 16 ParamChangesJSON []ParamChangeJSON 17 18 // ParamChangeJSON defines a parameter change used in JSON input 19 // this allows values to be specified in raw JSON instead of being string encoded 20 ParamChangeJSON struct { 21 Subspace string `json:"subspace" yaml:"subspace"` 22 Key string `json:"key" yaml:"key"` 23 Value json.RawMessage `json:"value" yaml:"value"` 24 } 25 26 // ParamChangeProposalJSON defines a ParameterChangeProposal with a deposit used to parse parameter change proposals 27 // from a JSON file 28 ParamChangeProposalJSON struct { 29 Title string `json:"title" yaml:"title"` 30 Description string `json:"description" yaml:"description"` 31 Changes ParamChangesJSON `json:"changes" yaml:"changes"` 32 Deposit sdk.SysCoins `json:"deposit" yaml:"deposit"` 33 Height uint64 `json:"height" yaml:"height"` 34 } 35 36 // ParamChangeProposalReq defines a parameter change proposal request body 37 ParamChangeProposalReq struct { 38 BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` 39 Title string `json:"title" yaml:"title"` 40 Description string `json:"description" yaml:"description"` 41 Changes ParamChangesJSON `json:"changes" yaml:"changes"` 42 Proposer sdk.AccAddress `json:"proposer" yaml:"proposer"` 43 Deposit sdk.SysCoins `json:"deposit" yaml:"deposit"` 44 Height uint64 `json:"height" yaml:"height"` 45 } 46 ) 47 48 // ToParamChange converts a ParamChangeJSON object to ParamChange 49 func (pcj ParamChangeJSON) ToParamChange() params.ParamChange { 50 return params.NewParamChange(pcj.Subspace, pcj.Key, string(pcj.Value)) 51 } 52 53 // ToParamChanges converts a slice of ParamChangeJSON objects to a slice of ParamChange 54 func (pcj ParamChangesJSON) ToParamChanges() []params.ParamChange { 55 res := make([]params.ParamChange, len(pcj)) 56 for i, pc := range pcj { 57 res[i] = pc.ToParamChange() 58 } 59 return res 60 } 61 62 // ParseParamChangeProposalJSON reads and parses a ParamChangeProposalJSON from file 63 func ParseParamChangeProposalJSON(cdc *codec.Codec, proposalFile string) (ParamChangeProposalJSON, error) { 64 var proposal ParamChangeProposalJSON 65 66 contents, err := ioutil.ReadFile(proposalFile) 67 if err != nil { 68 return proposal, err 69 } 70 71 if err := cdc.UnmarshalJSON(contents, &proposal); err != nil { 72 return proposal, err 73 } 74 75 return proposal, nil 76 }