github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/evm/client/rest/query.go (about)

     1  package rest
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  
     7  	ethcommon "github.com/ethereum/go-ethereum/common"
     8  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context"
     9  	clientCtx "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context"
    10  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/rest"
    11  	comm "github.com/fibonacci-chain/fbc/x/common"
    12  	"github.com/fibonacci-chain/fbc/x/evm/client/utils"
    13  	evmtypes "github.com/fibonacci-chain/fbc/x/evm/types"
    14  	"github.com/gorilla/mux"
    15  )
    16  
    17  func registerQueryRoutes(cliCtx clientCtx.CLIContext, r *mux.Router) {
    18  	r.HandleFunc("/evm/system/contract/address", QueryManageSysContractAddressFn(cliCtx)).Methods("GET")
    19  }
    20  
    21  // QueryManageSysContractAddressFn defines evm contract method blocked list handler
    22  func QueryManageSysContractAddressFn(cliCtx context.CLIContext) http.HandlerFunc {
    23  	return func(w http.ResponseWriter, r *http.Request) {
    24  		path := fmt.Sprintf("custom/%s/%s", evmtypes.ModuleName, evmtypes.QuerySysContractAddress)
    25  		cliCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, cliCtx, r)
    26  		if !ok {
    27  			return
    28  		}
    29  		addr, _, err := cliCtx.QueryWithData(path, nil)
    30  		if err != nil {
    31  			sdkErr := comm.ParseSDKError(err.Error())
    32  			comm.HandleErrorMsg(w, cliCtx, sdkErr.Code, sdkErr.Message)
    33  			return
    34  		}
    35  
    36  		ethAddr := ethcommon.BytesToAddress(addr).Hex()
    37  		result := utils.ResponseSysContractAddress{Address: ethAddr}
    38  
    39  		rest.PostProcessResponseBare(w, cliCtx, result)
    40  	}
    41  }