github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/bank/client/rest/query.go (about) 1 package rest 2 3 import ( 4 "net/http" 5 6 "github.com/gorilla/mux" 7 8 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context" 9 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 10 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/rest" 11 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/bank/internal/types" 12 ) 13 14 // query accountREST Handler 15 func QueryBalancesRequestHandlerFn(cliCtx context.CLIContext) http.HandlerFunc { 16 return func(w http.ResponseWriter, r *http.Request) { 17 w.Header().Set("Content-Type", "application/json") 18 vars := mux.Vars(r) 19 bech32addr := vars["address"] 20 21 addr, err := sdk.AccAddressFromBech32(bech32addr) 22 if err != nil { 23 rest.WriteErrorResponse(w, http.StatusInternalServerError, err.Error()) 24 return 25 } 26 27 cliCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, cliCtx, r) 28 if !ok { 29 return 30 } 31 32 params := types.NewQueryBalanceParams(addr) 33 bz, err := cliCtx.Codec.MarshalJSON(params) 34 if err != nil { 35 rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) 36 return 37 } 38 39 res, height, err := cliCtx.QueryWithData("custom/bank/balances", bz) 40 if err != nil { 41 rest.WriteErrorResponse(w, http.StatusInternalServerError, err.Error()) 42 return 43 } 44 45 cliCtx = cliCtx.WithHeight(height) 46 47 // the query will return empty if there is no data for this account 48 if len(res) == 0 { 49 rest.PostProcessResponse(w, cliCtx, sdk.Coins{}) 50 return 51 } 52 53 rest.PostProcessResponse(w, cliCtx, res) 54 } 55 }