github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/params/client/rest/rest.go (about) 1 package rest 2 3 import ( 4 "net/http" 5 6 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context" 7 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 8 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/rest" 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/client/utils" 10 govrest "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/gov/client/rest" 11 govtypes "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/gov/types" 12 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/params" 13 paramscutils "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/params/client/utils" 14 ) 15 16 // ProposalRESTHandler returns a ProposalRESTHandler that exposes the param 17 // change REST handler with a given sub-route. 18 func ProposalRESTHandler(cliCtx context.CLIContext) govrest.ProposalRESTHandler { 19 return govrest.ProposalRESTHandler{ 20 SubRoute: "param_change", 21 Handler: postProposalHandlerFn(cliCtx), 22 } 23 } 24 25 func postProposalHandlerFn(cliCtx context.CLIContext) http.HandlerFunc { 26 return func(w http.ResponseWriter, r *http.Request) { 27 var req paramscutils.ParamChangeProposalReq 28 if !rest.ReadRESTReq(w, r, cliCtx.Codec, &req) { 29 return 30 } 31 32 req.BaseReq = req.BaseReq.Sanitize() 33 if !req.BaseReq.ValidateBasic(w) { 34 return 35 } 36 37 content := params.NewParameterChangeProposal(req.Title, req.Description, req.Changes.ToParamChanges()) 38 39 msg := govtypes.NewMsgSubmitProposal(content, req.Deposit, req.Proposer) 40 if err := msg.ValidateBasic(); err != nil { 41 rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) 42 return 43 } 44 45 utils.WriteGenerateStdTxResponse(w, cliCtx, req.BaseReq, []sdk.Msg{msg}) 46 } 47 }