github.com/Finschia/finschia-sdk@v0.49.1/x/auth/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/auth/types" 10 ) 11 12 // NewQuerier creates a querier for auth REST endpoints 13 func NewQuerier(k AccountKeeper, legacyQuerierCdc *codec.LegacyAmino) 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, k, legacyQuerierCdc) 18 19 case types.QueryParams: 20 return queryParams(ctx, k, legacyQuerierCdc) 21 22 default: 23 return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown query path: %s", path[0]) 24 } 25 } 26 } 27 28 func queryAccount(ctx sdk.Context, req abci.RequestQuery, k AccountKeeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { 29 var params types.QueryAccountRequest 30 if err := legacyQuerierCdc.UnmarshalJSON(req.Data, ¶ms); err != nil { 31 return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) 32 } 33 34 addr, err := sdk.AccAddressFromBech32(params.Address) 35 if err != nil { 36 return nil, err 37 } 38 39 account := k.GetAccount(ctx, addr) 40 if account == nil { 41 return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownAddress, "account %s does not exist", params.Address) 42 } 43 44 bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, account) 45 if err != nil { 46 return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) 47 } 48 49 return bz, nil 50 } 51 52 func queryParams(ctx sdk.Context, k AccountKeeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { 53 params := k.GetParams(ctx) 54 55 res, err := codec.MarshalJSONIndent(legacyQuerierCdc, params) 56 if err != nil { 57 return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) 58 } 59 60 return res, nil 61 }