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  }