github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/wasm/client/rest/new_tx.go (about) 1 package rest 2 3 import ( 4 "net/http" 5 6 clientCtx "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context" 7 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/rest" 8 "github.com/fibonacci-chain/fbc/x/wasm/client/utils" 9 "github.com/fibonacci-chain/fbc/x/wasm/types" 10 "github.com/gorilla/mux" 11 ) 12 13 func registerNewTxRoutes(cliCtx clientCtx.CLIContext, r *mux.Router) { 14 r.HandleFunc("/wasm/contract/{contractAddr}/admin", setContractAdminHandlerFn(cliCtx)).Methods("PUT") 15 r.HandleFunc("/wasm/contract/{contractAddr}/code", migrateContractHandlerFn(cliCtx)).Methods("PUT") 16 } 17 18 type migrateContractReq struct { 19 BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` 20 Admin string `json:"admin,omitempty" yaml:"admin"` 21 CodeID uint64 `json:"code_id" yaml:"code_id"` 22 Msg []byte `json:"msg,omitempty" yaml:"msg"` 23 } 24 25 type updateContractAdministrateReq struct { 26 BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` 27 Admin string `json:"admin,omitempty" yaml:"admin"` 28 } 29 30 func setContractAdminHandlerFn(cliCtx clientCtx.CLIContext) http.HandlerFunc { 31 return func(w http.ResponseWriter, r *http.Request) { 32 var req updateContractAdministrateReq 33 if !rest.ReadRESTReq(w, r, cliCtx.Codec, &req) { 34 return 35 } 36 vars := mux.Vars(r) 37 contractAddr := vars["contractAddr"] 38 39 req.BaseReq = req.BaseReq.Sanitize() 40 if !req.BaseReq.ValidateBasic(w) { 41 return 42 } 43 44 msg := &types.MsgUpdateAdmin{ 45 Sender: req.BaseReq.From, 46 NewAdmin: req.Admin, 47 Contract: contractAddr, 48 } 49 if err := msg.ValidateBasic(); err != nil { 50 rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) 51 return 52 } 53 54 utils.WriteGeneratedTxResponse(cliCtx, w, req.BaseReq, msg) 55 } 56 } 57 58 func migrateContractHandlerFn(cliCtx clientCtx.CLIContext) http.HandlerFunc { 59 return func(w http.ResponseWriter, r *http.Request) { 60 var req migrateContractReq 61 if !rest.ReadRESTReq(w, r, cliCtx.Codec, &req) { 62 return 63 } 64 vars := mux.Vars(r) 65 contractAddr := vars["contractAddr"] 66 67 req.BaseReq = req.BaseReq.Sanitize() 68 if !req.BaseReq.ValidateBasic(w) { 69 return 70 } 71 72 msg := &types.MsgMigrateContract{ 73 Sender: req.BaseReq.From, 74 Contract: contractAddr, 75 CodeID: req.CodeID, 76 Msg: req.Msg, 77 } 78 if err := msg.ValidateBasic(); err != nil { 79 rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) 80 return 81 } 82 83 utils.WriteGeneratedTxResponse(cliCtx, w, req.BaseReq, msg) 84 } 85 }