Skip to content

Commit 146cdea

Browse files
Streamline Stargate/gRPC querier interfaces (#2093)
* Change RejectStargateQuerier from factory function to free function * Clarify error message to help contract developers * Streamline and improve documentation for RejectGrpcQuerier * Pull out function signatures * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
1 parent 6655b4a commit 146cdea

File tree

1 file changed

+23
-11
lines changed

1 file changed

+23
-11
lines changed

x/wasm/keeper/query_plugins.go

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,18 @@ func (q QueryHandler) GasConsumed() uint64 {
8484

8585
type CustomQuerier func(ctx sdk.Context, request json.RawMessage) ([]byte, error)
8686

87+
type (
88+
stargateQuerierFn func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error)
89+
grpcQuerierFn func(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error)
90+
)
91+
8792
type QueryPlugins struct {
8893
Bank func(ctx sdk.Context, request *wasmvmtypes.BankQuery) ([]byte, error)
8994
Custom CustomQuerier
9095
IBC func(ctx sdk.Context, caller sdk.AccAddress, request *wasmvmtypes.IBCQuery) ([]byte, error)
9196
Staking func(ctx sdk.Context, request *wasmvmtypes.StakingQuery) ([]byte, error)
92-
Stargate func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error)
93-
Grpc func(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error)
97+
Stargate stargateQuerierFn
98+
Grpc grpcQuerierFn
9499
Wasm func(ctx sdk.Context, request *wasmvmtypes.WasmQuery) ([]byte, error)
95100
Distribution func(ctx sdk.Context, request *wasmvmtypes.DistributionQuery) ([]byte, error)
96101
}
@@ -121,7 +126,7 @@ func DefaultQueryPlugins(
121126
Custom: NoCustomQuerier,
122127
IBC: IBCQuerier(wasm, channelKeeper),
123128
Staking: StakingQuerier(staking, distKeeper),
124-
Stargate: RejectStargateQuerier(),
129+
Stargate: RejectStargateQuerier,
125130
Grpc: RejectGrpcQuerier,
126131
Wasm: WasmQuerier(wasm),
127132
Distribution: DistributionQuerier(distKeeper),
@@ -332,10 +337,15 @@ func IBCQuerier(wasm contractMetaDataSource, channelKeeper types.ChannelKeeper)
332337
}
333338
}
334339

340+
// RejectGrpcQuerier is a querier that rejects all gRPC queries.
341+
//
342+
// Use AcceptListGrpcQuerier instead to create a list of accepted query types.
335343
func RejectGrpcQuerier(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error) {
336-
return nil, wasmvmtypes.UnsupportedRequest{Kind: "gRPC queries are disabled"}
344+
return nil, wasmvmtypes.UnsupportedRequest{Kind: "gRPC queries are disabled on this chain"}
337345
}
338346

347+
var _ grpcQuerierFn = RejectGrpcQuerier // just a type check
348+
339349
// AcceptListGrpcQuerier supports a preconfigured set of gRPC queries only.
340350
// All arguments must be non nil.
341351
//
@@ -344,7 +354,7 @@ func RejectGrpcQuerier(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.M
344354
//
345355
// These queries can be set via WithQueryPlugins option in the wasm keeper constructor:
346356
// WithQueryPlugins(&QueryPlugins{Grpc: AcceptListGrpcQuerier(acceptList, queryRouter, codec)})
347-
func AcceptListGrpcQuerier(acceptList AcceptedQueries, queryRouter GRPCQueryRouter, codec codec.Codec) func(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error) {
357+
func AcceptListGrpcQuerier(acceptList AcceptedQueries, queryRouter GRPCQueryRouter, codec codec.Codec) grpcQuerierFn {
348358
return func(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error) {
349359
protoResponseFn, accepted := acceptList[request.Path]
350360
if !accepted {
@@ -375,13 +385,15 @@ func AcceptListGrpcQuerier(acceptList AcceptedQueries, queryRouter GRPCQueryRout
375385
}
376386
}
377387

378-
// RejectStargateQuerier rejects all stargate queries
379-
func RejectStargateQuerier() func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) {
380-
return func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) {
381-
return nil, wasmvmtypes.UnsupportedRequest{Kind: "Stargate queries are disabled"}
382-
}
388+
// RejectStargateQuerier is a querier that rejects all stargate queries.
389+
//
390+
// Use AcceptListStargateQuerier instead to create a list of accepted query types.
391+
func RejectStargateQuerier(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) {
392+
return nil, wasmvmtypes.UnsupportedRequest{Kind: "Stargate queries are disabled on this chain"}
383393
}
384394

395+
var _ stargateQuerierFn = RejectStargateQuerier // just a type check
396+
385397
// AcceptedQueries defines accepted Stargate or gRPC queries as a map where the key is the query path
386398
// and the value is a function returning a proto.Message.
387399
//
@@ -400,7 +412,7 @@ type AcceptedQueries map[string]func() proto.Message
400412
//
401413
// These queries can be set via WithQueryPlugins option in the wasm keeper constructor:
402414
// WithQueryPlugins(&QueryPlugins{Stargate: AcceptListStargateQuerier(acceptList, queryRouter, codec)})
403-
func AcceptListStargateQuerier(acceptList AcceptedQueries, queryRouter GRPCQueryRouter, codec codec.Codec) func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) {
415+
func AcceptListStargateQuerier(acceptList AcceptedQueries, queryRouter GRPCQueryRouter, codec codec.Codec) stargateQuerierFn {
404416
return func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) {
405417
protoResponseFn, accepted := acceptList[request.Path]
406418
if !accepted {

0 commit comments

Comments
 (0)