github.com/Finschia/finschia-sdk@v0.48.1/x/params/keeper/querier.go (about) 1 package keeper 2 3 import ( 4 abci "github.com/tendermint/tendermint/abci/types" 5 6 "github.com/Finschia/finschia-sdk/codec" 7 sdk "github.com/Finschia/finschia-sdk/types" 8 sdkerrors "github.com/Finschia/finschia-sdk/types/errors" 9 "github.com/Finschia/finschia-sdk/x/params/types" 10 "github.com/Finschia/finschia-sdk/x/params/types/proposal" 11 ) 12 13 // NewQuerier returns a new querier handler for the x/params module. 14 func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { 15 return func(ctx sdk.Context, path []string, req abci.RequestQuery) ([]byte, error) { 16 switch path[0] { 17 case types.QueryParams: 18 return queryParams(ctx, req, k, legacyQuerierCdc) 19 20 default: 21 return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown query path: %s", path[0]) 22 } 23 } 24 } 25 26 func queryParams(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { 27 var params types.QuerySubspaceParams 28 29 if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { 30 return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) 31 } 32 33 ss, ok := k.GetSubspace(params.Subspace) 34 if !ok { 35 return nil, sdkerrors.Wrap(proposal.ErrUnknownSubspace, params.Subspace) 36 } 37 38 rawValue := ss.GetRaw(ctx, []byte(params.Key)) 39 resp := types.NewSubspaceParamsResponse(params.Subspace, params.Key, string(rawValue)) 40 41 bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, resp) 42 if err != nil { 43 return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) 44 } 45 46 return bz, nil 47 }