github.com/lino-network/lino@v0.6.11/x/price/querier.go (about) 1 package price 2 3 import ( 4 "strings" 5 6 wire "github.com/cosmos/cosmos-sdk/codec" 7 sdk "github.com/cosmos/cosmos-sdk/types" 8 abci "github.com/tendermint/tendermint/abci/types" 9 10 linotypes "github.com/lino-network/lino/types" 11 "github.com/lino-network/lino/utils" 12 "github.com/lino-network/lino/x/price/types" 13 ) 14 15 // creates a querier for price REST endpoints 16 func NewQuerier(pm PriceKeeper) sdk.Querier { 17 cdc := wire.New() 18 wire.RegisterCrypto(cdc) 19 return func(ctx sdk.Context, path []string, req abci.RequestQuery) (res []byte, err sdk.Error) { 20 switch path[0] { 21 case types.QueryPriceCurrent: 22 return utils.NewQueryResolver(0, func(args ...string) (interface{}, sdk.Error) { 23 return pm.CurrPrice(ctx) 24 })(ctx, cdc, path) 25 case types.QueryPriceHistory: 26 return utils.NewQueryResolver(0, func(args ...string) (interface{}, sdk.Error) { 27 return pm.HistoryPrice(ctx), nil 28 })(ctx, cdc, path) 29 case types.QueryLastFeed: 30 return utils.NewQueryResolver(1, func(args ...string) (interface{}, sdk.Error) { 31 return pm.LastFeed(ctx, linotypes.AccountKey(args[0])) 32 })(ctx, cdc, path) 33 default: 34 return nil, sdk.ErrUnknownRequest("unknown query endpoint:" + strings.Join(path, "/")) 35 } 36 } 37 }