github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/evm/client/rest/rest_proposal.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 comm "github.com/fibonacci-chain/fbc/x/common" 11 "github.com/fibonacci-chain/fbc/x/evm/types" 12 "github.com/fibonacci-chain/fbc/x/gov" 13 govrest "github.com/fibonacci-chain/fbc/x/gov/client/rest" 14 ) 15 16 type ManageSysContractAddressProposalReq struct { 17 BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` 18 19 Title string `json:"title" yaml:"title"` 20 Description string `json:"description" yaml:"description"` 21 22 ContractAddr sdk.AccAddress `json:"contract_address" yaml:"contract_address"` 23 IsAdded bool `json:"is_added" yaml:"is_added"` 24 25 Proposer sdk.AccAddress `json:"proposer" yaml:"proposer"` 26 Deposit sdk.SysCoins `json:"deposit" yaml:"deposit"` 27 } 28 29 // ManageSysContractAddressProposalRESTHandler defines evm proposal handler 30 func ManageSysContractAddressProposalRESTHandler(cliCtx context.CLIContext) govrest.ProposalRESTHandler { 31 return govrest.ProposalRESTHandler{ 32 SubRoute: "manage_system_contract_address", 33 Handler: postManageSysContractAddressProposalHandlerFn(cliCtx), 34 } 35 } 36 37 func postManageSysContractAddressProposalHandlerFn(cliCtx context.CLIContext) http.HandlerFunc { 38 return func(w http.ResponseWriter, r *http.Request) { 39 var req ManageSysContractAddressProposalReq 40 if !rest.ReadRESTReq(w, r, cliCtx.Codec, &req) { 41 return 42 } 43 44 req.BaseReq = req.BaseReq.Sanitize() 45 if !req.BaseReq.ValidateBasic(w) { 46 return 47 } 48 49 content := types.NewManageSysContractAddressProposal( 50 req.Title, 51 req.Description, 52 req.ContractAddr, 53 req.IsAdded, 54 ) 55 56 msg := gov.NewMsgSubmitProposal(content, req.Deposit, req.Proposer) 57 if err := msg.ValidateBasic(); err != nil { 58 comm.HandleErrorMsg(w, cliCtx, comm.CodeInvalidParam, err.Error()) 59 return 60 } 61 62 utils.WriteGenerateStdTxResponse(w, cliCtx, req.BaseReq, []sdk.Msg{msg}) 63 } 64 }