github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/auth/keeper/querier.go (about) 1 package keeper 2 3 import ( 4 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 5 6 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 7 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 8 sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors" 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/types" 10 ) 11 12 // NewQuerier creates a querier for auth REST endpoints 13 func NewQuerier(keeper AccountKeeper) sdk.Querier { 14 return func(ctx sdk.Context, path []string, req abci.RequestQuery) ([]byte, error) { 15 switch path[0] { 16 case types.QueryAccount: 17 return queryAccount(ctx, req, keeper) 18 default: 19 return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown query path: %s", path[0]) 20 } 21 } 22 } 23 24 func queryAccount(ctx sdk.Context, req abci.RequestQuery, keeper AccountKeeper) ([]byte, error) { 25 var params types.QueryAccountParams 26 if err := keeper.cdc.UnmarshalJSON(req.Data, ¶ms); err != nil { 27 return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) 28 } 29 30 account := keeper.GetAccount(ctx, params.Address) 31 if account == nil { 32 return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownAddress, "account %s does not exist", params.Address) 33 } 34 35 bz, err := codec.MarshalJSONIndent(keeper.cdc, account) 36 if err != nil { 37 return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) 38 } 39 40 return bz, nil 41 }