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