feat: authz add query all grants by granter (#10326)

<!--
The default pull request template is for types feat, fix, or refactor.
For other templates, add one of the following parameters to the url:
- template=docs.md
- template=other.md
-->

## Description

Closes: #9966 

<!-- Add a description of the changes that this PR introduces and the files that
are the most critical to review. -->

---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [x] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed 
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)
This commit is contained in:
MD Aleem 2021-10-11 19:00:12 +05:30 committed by GitHub
parent 7e6151e93c
commit 36372701cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 1020 additions and 27 deletions

View File

@ -47,6 +47,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
* (bank) [\#9618](https://github.com/cosmos/cosmos-sdk/pull/9618) Update bank.Metadata: add URI and URIHash attributes.
* [\#9837](https://github.com/cosmos/cosmos-sdk/issues/9837) `--generate-only` flag will accept the keyname now.
* [\#10045](https://github.com/cosmos/cosmos-sdk/pull/10045) Revert [#8549](https://github.com/cosmos/cosmos-sdk/pull/8549). Do not route grpc queries through Tendermint.
* [\#10326](https://github.com/cosmos/cosmos-sdk/pull/10326) `x/authz` add query all grants by granter query.
### API Breaking Changes

View File

@ -47,6 +47,8 @@
- [GrantAuthorization](#cosmos.authz.v1beta1.GrantAuthorization)
- [cosmos/authz/v1beta1/query.proto](#cosmos/authz/v1beta1/query.proto)
- [QueryGranterGrantsRequest](#cosmos.authz.v1beta1.QueryGranterGrantsRequest)
- [QueryGranterGrantsResponse](#cosmos.authz.v1beta1.QueryGranterGrantsResponse)
- [QueryGrantsRequest](#cosmos.authz.v1beta1.QueryGrantsRequest)
- [QueryGrantsResponse](#cosmos.authz.v1beta1.QueryGrantsResponse)
@ -1274,6 +1276,38 @@ GrantAuthorization defines the GenesisState/GrantAuthorization type.
<a name="cosmos.authz.v1beta1.QueryGranterGrantsRequest"></a>
### QueryGranterGrantsRequest
QueryGranterGrantsRequest is the request type for the Query/Grants RPC method.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `granter` | [string](#string) | | |
| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an pagination for the request. |
<a name="cosmos.authz.v1beta1.QueryGranterGrantsResponse"></a>
### QueryGranterGrantsResponse
QueryGranterGrantsResponse is the response type for the Query/GranterGrants RPC method.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `grants` | [Grant](#cosmos.authz.v1beta1.Grant) | repeated | authorizations is a list of grants granted for grantee by granter. |
| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines an pagination for the response. |
<a name="cosmos.authz.v1beta1.QueryGrantsRequest"></a>
### QueryGrantsRequest
@ -1322,6 +1356,7 @@ Query defines the gRPC querier service.
| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint |
| ----------- | ------------ | ------------- | ------------| ------- | -------- |
| `Grants` | [QueryGrantsRequest](#cosmos.authz.v1beta1.QueryGrantsRequest) | [QueryGrantsResponse](#cosmos.authz.v1beta1.QueryGrantsResponse) | Returns list of `Authorization`, granted to the grantee by the granter. | GET|/cosmos/authz/v1beta1/grants|
| `GranterGrants` | [QueryGranterGrantsRequest](#cosmos.authz.v1beta1.QueryGranterGrantsRequest) | [QueryGranterGrantsResponse](#cosmos.authz.v1beta1.QueryGranterGrantsResponse) | GranterGrants returns list of `Authorization`, granted by granter. | GET|/cosmos/authz/v1beta1/grants/{granter}|
<!-- end services -->

View File

@ -14,6 +14,11 @@ service Query {
rpc Grants(QueryGrantsRequest) returns (QueryGrantsResponse) {
option (google.api.http).get = "/cosmos/authz/v1beta1/grants";
}
// GranterGrants returns list of `Authorization`, granted by granter.
rpc GranterGrants(QueryGranterGrantsRequest) returns (QueryGranterGrantsResponse) {
option (google.api.http).get = "/cosmos/authz/v1beta1/grants/{granter}";
}
}
// QueryGrantsRequest is the request type for the Query/Grants RPC method.
@ -33,3 +38,19 @@ message QueryGrantsResponse {
// pagination defines an pagination for the response.
cosmos.base.query.v1beta1.PageResponse pagination = 2;
}
// QueryGranterGrantsRequest is the request type for the Query/GranterGrants RPC method.
message QueryGranterGrantsRequest {
string granter = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// pagination defines an pagination for the request.
cosmos.base.query.v1beta1.PageRequest pagination = 2;
}
// QueryGranterGrantsResponse is the response type for the Query/GranterGrants RPC method.
message QueryGranterGrantsResponse {
// authorizations is a list of grants granted for grantee by granter.
repeated cosmos.authz.v1beta1.Grant grants = 1;
// pagination defines an pagination for the response.
cosmos.base.query.v1beta1.PageResponse pagination = 2;
}

View File

@ -27,6 +27,7 @@ func GetQueryCmd() *cobra.Command {
authorizationQueryCmd.AddCommand(
GetCmdQueryGrants(),
GetQueryGranterGrants(),
)
return authorizationQueryCmd
@ -91,3 +92,51 @@ $ %s query %s grants cosmos1skjw.. cosmos1skjwj.. %s
flags.AddPaginationFlagsToCmd(cmd, "grants")
return cmd
}
func GetQueryGranterGrants() *cobra.Command {
cmd := &cobra.Command{
Use: "granter-grants [granter-addr]",
Args: cobra.ExactArgs(1),
Short: "query authorization grants granted by granter",
Long: strings.TrimSpace(
fmt.Sprintf(`Query authorization grants granted by granter.
Examples:
$ %s q %s granter-grants cosmos1skj..
`,
version.AppName, authz.ModuleName),
),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
granter, err := sdk.AccAddressFromBech32(args[0])
if err != nil {
return err
}
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
queryClient := authz.NewQueryClient(clientCtx)
res, err := queryClient.GranterGrants(
cmd.Context(),
&authz.QueryGranterGrantsRequest{
Granter: granter.String(),
Pagination: pageReq,
},
)
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
flags.AddQueryFlagsToCmd(cmd)
flags.AddPaginationFlagsToCmd(cmd, "granter-grants")
return cmd
}

View File

@ -161,3 +161,60 @@ func (s *IntegrationTestSuite) TestQueryGrantsGRPC() {
})
}
}
func (s *IntegrationTestSuite) TestQueryGranterGrantsGRPC() {
val := s.network.Validators[0]
grantee := s.grantee[1]
require := s.Require()
testCases := []struct {
name string
url string
expectErr bool
errMsg string
numItems int
}{
{
"invalid account address",
fmt.Sprintf("%s/cosmos/authz/v1beta1/grants/%s", val.APIAddress, "invalid address"),
true,
"decoding bech32 failed",
0,
},
{
"no authorizations found",
fmt.Sprintf("%s/cosmos/authz/v1beta1/grants/%s", val.APIAddress, grantee.String()),
false,
"",
0,
},
{
"valid query",
fmt.Sprintf("%s/cosmos/authz/v1beta1/grants/%s", val.APIAddress, val.Address.String()),
false,
"",
6,
},
{
"valid query: expect two grants",
fmt.Sprintf("%s/cosmos/authz/v1beta1/grants/%s", val.APIAddress, val.Address.String()),
false,
"",
6,
},
}
for _, tc := range testCases {
s.Run(tc.name, func() {
resp, _ := rest.GetRequest(tc.url)
if tc.expectErr {
require.Contains(string(resp), tc.errMsg)
} else {
var authorizations authz.QueryGrantsResponse
err := val.ClientCtx.Codec.UnmarshalJSON(resp, &authorizations)
require.NoError(err)
require.Len(authorizations.Grants, tc.numItems)
}
})
}
}

View File

@ -180,3 +180,75 @@ func (s *IntegrationTestSuite) TestQueryAuthorization() {
})
}
}
func (s *IntegrationTestSuite) TestQueryGranterGrants() {
val := s.network.Validators[0]
grantee := s.grantee[0]
require := s.Require()
testCases := []struct {
name string
args []string
expectErr bool
expectedErr string
expItems int
}{
{
"invalid address",
[]string{
"invalid-address",
fmt.Sprintf("--%s=json", tmcli.OutputFlag),
},
true,
"decoding bech32 failed",
0,
},
{
"no authorization found",
[]string{
grantee.String(),
fmt.Sprintf("--%s=json", tmcli.OutputFlag),
},
false,
"",
0,
},
{
"valid case",
[]string{
val.Address.String(),
fmt.Sprintf("--%s=json", tmcli.OutputFlag),
},
false,
"",
6,
},
{
"valid case with pagination",
[]string{
val.Address.String(),
"--limit=2",
fmt.Sprintf("--%s=json", tmcli.OutputFlag),
},
false,
"",
2,
},
}
for _, tc := range testCases {
s.Run(tc.name, func() {
cmd := cli.GetQueryGranterGrants()
clientCtx := val.ClientCtx
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
if tc.expectErr {
require.Error(err)
require.Contains(out.String(), tc.expectedErr)
} else {
require.NoError(err)
var grants authz.QueryGranterGrantsResponse
require.NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &grants))
require.Len(grants.Grants, tc.expItems)
}
})
}
}

View File

@ -90,6 +90,53 @@ func (k Keeper) Grants(c context.Context, req *authz.QueryGrantsRequest) (*authz
}, nil
}
// GranterGrants implements the Query/GranterGrants gRPC method.
func (k Keeper) GranterGrants(c context.Context, req *authz.QueryGranterGrantsRequest) (*authz.QueryGranterGrantsResponse, error) {
if req == nil {
return nil, status.Errorf(codes.InvalidArgument, "empty request")
}
granter, err := sdk.AccAddressFromBech32(req.Granter)
if err != nil {
return nil, err
}
ctx := sdk.UnwrapSDKContext(c)
store := ctx.KVStore(k.storeKey)
authzStore := prefix.NewStore(store, grantStoreKey(nil, granter, ""))
var authorizations []*authz.Grant
pageRes, err := query.FilteredPaginate(authzStore, req.Pagination, func(key []byte, value []byte,
accumulate bool) (bool, error) {
auth, err := unmarshalAuthorization(k.cdc, value)
if err != nil {
return false, err
}
auth1 := auth.GetAuthorization()
if accumulate {
any, err := codectypes.NewAnyWithValue(auth1)
if err != nil {
return false, status.Errorf(codes.Internal, err.Error())
}
authorizations = append(authorizations, &authz.Grant{
Authorization: any,
Expiration: auth.Expiration,
})
}
return true, nil
})
if err != nil {
return nil, err
}
return &authz.QueryGranterGrantsResponse{
Grants: authorizations,
Pagination: pageRes,
}, nil
}
// unmarshal an authorization from a store value
func unmarshalAuthorization(cdc codec.BinaryCodec, value []byte) (v authz.Grant, err error) {
err = cdc.Unmarshal(value, &v)

View File

@ -8,6 +8,7 @@ import (
"github.com/stretchr/testify/require"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/query"
"github.com/cosmos/cosmos-sdk/x/authz"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
)
@ -162,3 +163,79 @@ func (suite *TestSuite) TestGRPCQueryAuthorizations() {
})
}
}
func (suite *TestSuite) TestGRPCQueryGranterGrants() {
require := suite.Require()
app, ctx, queryClient, addrs := suite.app, suite.ctx, suite.queryClient, suite.addrs
testCases := []struct {
msg string
preRun func()
expError bool
request authz.QueryGranterGrantsRequest
numItems int
}{
{
"fail invalid granter addr",
func() {},
true,
authz.QueryGranterGrantsRequest{},
0,
},
{
"valid case, single authorization",
func() {
now := ctx.BlockHeader().Time
newCoins := sdk.NewCoins(sdk.NewInt64Coin("steak", 100))
authorization := &banktypes.SendAuthorization{SpendLimit: newCoins}
err := app.AuthzKeeper.SaveGrant(ctx, addrs[1], addrs[0], authorization, now.Add(time.Hour))
require.NoError(err)
},
false,
authz.QueryGranterGrantsRequest{
Granter: addrs[0].String(),
},
1,
},
{
"valid case, multiple authorization",
func() {
now := ctx.BlockHeader().Time
newCoins := sdk.NewCoins(sdk.NewInt64Coin("steak", 100))
authorization := &banktypes.SendAuthorization{SpendLimit: newCoins}
err := app.AuthzKeeper.SaveGrant(ctx, addrs[2], addrs[0], authorization, now.Add(time.Hour))
require.NoError(err)
},
false,
authz.QueryGranterGrantsRequest{
Granter: addrs[0].String(),
},
2,
},
{
"valid case, pagination",
func() {},
false,
authz.QueryGranterGrantsRequest{
Granter: addrs[0].String(),
Pagination: &query.PageRequest{
Limit: 1,
},
},
1,
},
}
for _, tc := range testCases {
suite.Run(fmt.Sprintf("Case %s", tc.msg), func() {
tc.preRun()
result, err := queryClient.GranterGrants(gocontext.Background(), &tc.request)
if tc.expError {
require.Error(err)
} else {
require.NoError(err)
require.Len(result.Grants, tc.numItems)
}
})
}
}

View File

@ -156,41 +156,156 @@ func (m *QueryGrantsResponse) GetPagination() *query.PageResponse {
return nil
}
// QueryGranterGrantsRequest is the request type for the Query/Grants RPC method.
type QueryGranterGrantsRequest struct {
Granter string `protobuf:"bytes,1,opt,name=granter,proto3" json:"granter,omitempty"`
// pagination defines an pagination for the request.
Pagination *query.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
}
func (m *QueryGranterGrantsRequest) Reset() { *m = QueryGranterGrantsRequest{} }
func (m *QueryGranterGrantsRequest) String() string { return proto.CompactTextString(m) }
func (*QueryGranterGrantsRequest) ProtoMessage() {}
func (*QueryGranterGrantsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_376d714ffdeb1545, []int{2}
}
func (m *QueryGranterGrantsRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *QueryGranterGrantsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_QueryGranterGrantsRequest.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *QueryGranterGrantsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryGranterGrantsRequest.Merge(m, src)
}
func (m *QueryGranterGrantsRequest) XXX_Size() int {
return m.Size()
}
func (m *QueryGranterGrantsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_QueryGranterGrantsRequest.DiscardUnknown(m)
}
var xxx_messageInfo_QueryGranterGrantsRequest proto.InternalMessageInfo
func (m *QueryGranterGrantsRequest) GetGranter() string {
if m != nil {
return m.Granter
}
return ""
}
func (m *QueryGranterGrantsRequest) GetPagination() *query.PageRequest {
if m != nil {
return m.Pagination
}
return nil
}
// QueryGranterGrantsResponse is the response type for the Query/GranterGrants RPC method.
type QueryGranterGrantsResponse struct {
// authorizations is a list of grants granted for grantee by granter.
Grants []*Grant `protobuf:"bytes,1,rep,name=grants,proto3" json:"grants,omitempty"`
// pagination defines an pagination for the response.
Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
}
func (m *QueryGranterGrantsResponse) Reset() { *m = QueryGranterGrantsResponse{} }
func (m *QueryGranterGrantsResponse) String() string { return proto.CompactTextString(m) }
func (*QueryGranterGrantsResponse) ProtoMessage() {}
func (*QueryGranterGrantsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_376d714ffdeb1545, []int{3}
}
func (m *QueryGranterGrantsResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *QueryGranterGrantsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_QueryGranterGrantsResponse.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *QueryGranterGrantsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryGranterGrantsResponse.Merge(m, src)
}
func (m *QueryGranterGrantsResponse) XXX_Size() int {
return m.Size()
}
func (m *QueryGranterGrantsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_QueryGranterGrantsResponse.DiscardUnknown(m)
}
var xxx_messageInfo_QueryGranterGrantsResponse proto.InternalMessageInfo
func (m *QueryGranterGrantsResponse) GetGrants() []*Grant {
if m != nil {
return m.Grants
}
return nil
}
func (m *QueryGranterGrantsResponse) GetPagination() *query.PageResponse {
if m != nil {
return m.Pagination
}
return nil
}
func init() {
proto.RegisterType((*QueryGrantsRequest)(nil), "cosmos.authz.v1beta1.QueryGrantsRequest")
proto.RegisterType((*QueryGrantsResponse)(nil), "cosmos.authz.v1beta1.QueryGrantsResponse")
proto.RegisterType((*QueryGranterGrantsRequest)(nil), "cosmos.authz.v1beta1.QueryGranterGrantsRequest")
proto.RegisterType((*QueryGranterGrantsResponse)(nil), "cosmos.authz.v1beta1.QueryGranterGrantsResponse")
}
func init() { proto.RegisterFile("cosmos/authz/v1beta1/query.proto", fileDescriptor_376d714ffdeb1545) }
var fileDescriptor_376d714ffdeb1545 = []byte{
// 410 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x41, 0xef, 0xd2, 0x30,
0x18, 0xc6, 0x29, 0x7f, 0xc5, 0x58, 0x3c, 0x55, 0x0f, 0x13, 0xc9, 0xb2, 0x10, 0xa2, 0xd3, 0x84,
0x36, 0x8c, 0xbb, 0x89, 0x1c, 0xe4, 0xaa, 0x53, 0x2f, 0x5e, 0x48, 0x07, 0x4d, 0x59, 0x64, 0xeb,
0x68, 0x3b, 0x23, 0x1e, 0xf5, 0x6c, 0x62, 0xc2, 0x57, 0xf1, 0x43, 0x78, 0x24, 0x7a, 0xf1, 0x68,
0xc0, 0xf8, 0x39, 0xcc, 0xda, 0x22, 0x10, 0x97, 0xc8, 0x69, 0xe9, 0xf2, 0x3c, 0xcf, 0xfb, 0x7b,
0xda, 0x17, 0x06, 0x33, 0xa1, 0x32, 0xa1, 0x08, 0x2d, 0xf5, 0xe2, 0x3d, 0x79, 0x3b, 0x4c, 0x98,
0xa6, 0x43, 0xb2, 0x2a, 0x99, 0x5c, 0xe3, 0x42, 0x0a, 0x2d, 0xd0, 0x1d, 0xab, 0xc0, 0x46, 0x81,
0x9d, 0xa2, 0xd3, 0xe5, 0x42, 0xf0, 0x25, 0x23, 0xb4, 0x48, 0x09, 0xcd, 0x73, 0xa1, 0xa9, 0x4e,
0x45, 0xae, 0xac, 0xa7, 0xf3, 0xc8, 0xa5, 0x26, 0x54, 0x31, 0x1b, 0xf6, 0x37, 0xba, 0xa0, 0x3c,
0xcd, 0x8d, 0xd8, 0x69, 0xeb, 0x09, 0xec, 0x34, 0xab, 0xb8, 0x6b, 0x15, 0x53, 0x73, 0x22, 0x0e,
0xc7, 0x1c, 0x7a, 0xbf, 0x01, 0x44, 0xcf, 0xab, 0xfc, 0x89, 0xa4, 0xb9, 0x56, 0x31, 0x5b, 0x95,
0x4c, 0x69, 0x14, 0xc1, 0x1b, 0xbc, 0xfa, 0xc1, 0xa4, 0x07, 0x02, 0x10, 0xde, 0x1c, 0x7b, 0xdf,
0xbe, 0x0c, 0x0e, 0x45, 0x9e, 0xcc, 0xe7, 0x92, 0x29, 0xf5, 0x42, 0xcb, 0x34, 0xe7, 0xf1, 0x41,
0x78, 0xf4, 0x30, 0xaf, 0x79, 0x99, 0x87, 0xa1, 0x00, 0xde, 0xca, 0x14, 0x9f, 0xea, 0x75, 0xc1,
0xa6, 0xa5, 0x5c, 0x7a, 0x57, 0x95, 0x31, 0x86, 0x99, 0xe2, 0x2f, 0xd7, 0x05, 0x7b, 0x25, 0x97,
0xe8, 0x29, 0x84, 0xc7, 0xc6, 0xde, 0xb5, 0x00, 0x84, 0xed, 0xe8, 0x3e, 0x76, 0xa9, 0xd5, 0xf5,
0x60, 0x7b, 0xd7, 0xae, 0x37, 0x7e, 0x46, 0x39, 0x73, 0x2d, 0xe2, 0x13, 0x67, 0x6f, 0x03, 0xe0,
0xed, 0xb3, 0xa2, 0xaa, 0x10, 0xb9, 0x62, 0x68, 0x04, 0x5b, 0x06, 0x46, 0x79, 0x20, 0xb8, 0x0a,
0xdb, 0xd1, 0x3d, 0x5c, 0xf7, 0x5c, 0xd8, 0xb8, 0x62, 0x27, 0x45, 0x93, 0x33, 0xa8, 0xa6, 0x81,
0x7a, 0xf0, 0x5f, 0x28, 0x3b, 0xf1, 0x94, 0x2a, 0xfa, 0x04, 0xe0, 0x75, 0x43, 0x85, 0x3e, 0x02,
0xd8, 0xb2, 0x68, 0x28, 0xac, 0x47, 0xf8, 0xf7, 0x99, 0x3a, 0x0f, 0x2f, 0x50, 0xda, 0xa9, 0xbd,
0xfe, 0x87, 0xef, 0xbf, 0x36, 0x4d, 0x1f, 0x75, 0x49, 0xed, 0xba, 0xd8, 0x62, 0xe3, 0xc7, 0x5f,
0x77, 0x3e, 0xd8, 0xee, 0x7c, 0xf0, 0x73, 0xe7, 0x83, 0xcf, 0x7b, 0xbf, 0xb1, 0xdd, 0xfb, 0x8d,
0x1f, 0x7b, 0xbf, 0xf1, 0xba, 0xcf, 0x53, 0xbd, 0x28, 0x13, 0x3c, 0x13, 0xd9, 0x21, 0xc1, 0x7e,
0x06, 0x6a, 0xfe, 0x86, 0xbc, 0xb3, 0x71, 0x49, 0xcb, 0x6c, 0xd5, 0xe8, 0x4f, 0x00, 0x00, 0x00,
0xff, 0xff, 0xb6, 0x08, 0x74, 0x8e, 0x16, 0x03, 0x00, 0x00,
// 476 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x94, 0xb1, 0x6e, 0xd4, 0x30,
0x18, 0xc7, 0xcf, 0x29, 0x1c, 0xc2, 0x85, 0xc5, 0x30, 0xa4, 0xa1, 0x8a, 0xa2, 0x53, 0x55, 0x02,
0x52, 0x6d, 0x9a, 0xee, 0x48, 0x74, 0x68, 0x57, 0x08, 0xb0, 0xb0, 0x9c, 0x9c, 0x9e, 0xe5, 0x46,
0x5c, 0xe2, 0xd4, 0x76, 0x10, 0x07, 0x62, 0x81, 0x17, 0x40, 0xea, 0x80, 0xc4, 0xc8, 0x23, 0x20,
0x1e, 0x82, 0xb1, 0x82, 0x85, 0x11, 0xdd, 0x21, 0x9e, 0x03, 0xc5, 0xf6, 0x71, 0x04, 0x22, 0x7a,
0x82, 0xa5, 0x53, 0xe4, 0xe8, 0xff, 0xff, 0x7f, 0xbf, 0xef, 0xfb, 0x9c, 0xc0, 0xe8, 0x40, 0xa8,
0x42, 0x28, 0x42, 0x6b, 0x7d, 0xf8, 0x8c, 0x3c, 0xd9, 0xce, 0x98, 0xa6, 0xdb, 0xe4, 0xa8, 0x66,
0x72, 0x82, 0x2b, 0x29, 0xb4, 0x40, 0x57, 0xad, 0x02, 0x1b, 0x05, 0x76, 0x8a, 0x60, 0x9d, 0x0b,
0xc1, 0xc7, 0x8c, 0xd0, 0x2a, 0x27, 0xb4, 0x2c, 0x85, 0xa6, 0x3a, 0x17, 0xa5, 0xb2, 0x9e, 0xe0,
0xa6, 0x4b, 0xcd, 0xa8, 0x62, 0x36, 0xec, 0x67, 0x74, 0x45, 0x79, 0x5e, 0x1a, 0xb1, 0xd3, 0x76,
0x13, 0xd8, 0x6a, 0x56, 0xb1, 0x66, 0x15, 0x43, 0x73, 0x22, 0x0e, 0xc7, 0x1c, 0x06, 0xdf, 0x01,
0x44, 0xf7, 0x9a, 0xfc, 0x7d, 0x49, 0x4b, 0xad, 0x52, 0x76, 0x54, 0x33, 0xa5, 0x51, 0x02, 0x2f,
0xf0, 0xe6, 0x05, 0x93, 0x3e, 0x88, 0x40, 0x7c, 0x71, 0xd7, 0xff, 0xf4, 0x61, 0x6b, 0xde, 0xc8,
0x9d, 0xd1, 0x48, 0x32, 0xa5, 0xee, 0x6b, 0x99, 0x97, 0x3c, 0x9d, 0x0b, 0x17, 0x1e, 0xe6, 0x7b,
0xcb, 0x79, 0x18, 0x8a, 0xe0, 0xa5, 0x42, 0xf1, 0xa1, 0x9e, 0x54, 0x6c, 0x58, 0xcb, 0xb1, 0xbf,
0xd2, 0x18, 0x53, 0x58, 0x28, 0xfe, 0x60, 0x52, 0xb1, 0x87, 0x72, 0x8c, 0xf6, 0x20, 0x5c, 0x74,
0xec, 0x9f, 0x8b, 0x40, 0xbc, 0x9a, 0x6c, 0x62, 0x97, 0xda, 0x8c, 0x07, 0xdb, 0x59, 0xbb, 0xbe,
0xf1, 0x5d, 0xca, 0x99, 0xeb, 0x22, 0xfd, 0xc5, 0x39, 0x38, 0x06, 0xf0, 0x4a, 0xab, 0x51, 0x55,
0x89, 0x52, 0x31, 0xb4, 0x03, 0xfb, 0x06, 0x46, 0xf9, 0x20, 0x5a, 0x89, 0x57, 0x93, 0x6b, 0xb8,
0x6b, 0x5d, 0xd8, 0xb8, 0x52, 0x27, 0x45, 0xfb, 0x2d, 0x28, 0xcf, 0x40, 0x5d, 0x3f, 0x15, 0xca,
0x56, 0x6c, 0x51, 0xbd, 0x01, 0x70, 0x6d, 0x41, 0xc5, 0xe4, 0xff, 0x6f, 0x61, 0xaf, 0x03, 0xed,
0x5f, 0xe6, 0xf5, 0x16, 0xc0, 0xa0, 0x8b, 0xec, 0x2c, 0x8c, 0x2d, 0x79, 0xef, 0xc1, 0xf3, 0x06,
0x0e, 0xbd, 0x02, 0xb0, 0x6f, 0xd1, 0x50, 0xdc, 0x8d, 0xf0, 0xe7, 0xed, 0x0e, 0x6e, 0x2c, 0xa1,
0xb4, 0x55, 0x07, 0x1b, 0x2f, 0x3f, 0x7f, 0x3b, 0xf6, 0x42, 0xb4, 0x4e, 0x3a, 0xbf, 0x32, 0xd7,
0xd8, 0x3b, 0x00, 0x2f, 0xb7, 0xe6, 0x84, 0xc8, 0x69, 0x25, 0x7e, 0xdb, 0x75, 0x70, 0x6b, 0x79,
0x83, 0x43, 0xc3, 0x06, 0x2d, 0x46, 0x9b, 0x7f, 0x43, 0x23, 0xcf, 0xdd, 0xc5, 0x78, 0xb1, 0x7b,
0xfb, 0xe3, 0x34, 0x04, 0x27, 0xd3, 0x10, 0x7c, 0x9d, 0x86, 0xe0, 0xf5, 0x2c, 0xec, 0x9d, 0xcc,
0xc2, 0xde, 0x97, 0x59, 0xd8, 0x7b, 0xb4, 0xc1, 0x73, 0x7d, 0x58, 0x67, 0xf8, 0x40, 0x14, 0xf3,
0x2c, 0xfb, 0xd8, 0x52, 0xa3, 0xc7, 0xe4, 0xa9, 0x0d, 0xce, 0xfa, 0xe6, 0x8f, 0xb1, 0xf3, 0x23,
0x00, 0x00, 0xff, 0xff, 0x7e, 0xb6, 0x86, 0xa8, 0xf2, 0x04, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -207,6 +322,8 @@ const _ = grpc.SupportPackageIsVersion4
type QueryClient interface {
// Returns list of `Authorization`, granted to the grantee by the granter.
Grants(ctx context.Context, in *QueryGrantsRequest, opts ...grpc.CallOption) (*QueryGrantsResponse, error)
// GranterGrants returns list of `Authorization`, granted by granter.
GranterGrants(ctx context.Context, in *QueryGranterGrantsRequest, opts ...grpc.CallOption) (*QueryGranterGrantsResponse, error)
}
type queryClient struct {
@ -226,10 +343,21 @@ func (c *queryClient) Grants(ctx context.Context, in *QueryGrantsRequest, opts .
return out, nil
}
func (c *queryClient) GranterGrants(ctx context.Context, in *QueryGranterGrantsRequest, opts ...grpc.CallOption) (*QueryGranterGrantsResponse, error) {
out := new(QueryGranterGrantsResponse)
err := c.cc.Invoke(ctx, "/cosmos.authz.v1beta1.Query/GranterGrants", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// QueryServer is the server API for Query service.
type QueryServer interface {
// Returns list of `Authorization`, granted to the grantee by the granter.
Grants(context.Context, *QueryGrantsRequest) (*QueryGrantsResponse, error)
// GranterGrants returns list of `Authorization`, granted by granter.
GranterGrants(context.Context, *QueryGranterGrantsRequest) (*QueryGranterGrantsResponse, error)
}
// UnimplementedQueryServer can be embedded to have forward compatible implementations.
@ -239,6 +367,9 @@ type UnimplementedQueryServer struct {
func (*UnimplementedQueryServer) Grants(ctx context.Context, req *QueryGrantsRequest) (*QueryGrantsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Grants not implemented")
}
func (*UnimplementedQueryServer) GranterGrants(ctx context.Context, req *QueryGranterGrantsRequest) (*QueryGranterGrantsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GranterGrants not implemented")
}
func RegisterQueryServer(s grpc1.Server, srv QueryServer) {
s.RegisterService(&_Query_serviceDesc, srv)
@ -262,6 +393,24 @@ func _Query_Grants_Handler(srv interface{}, ctx context.Context, dec func(interf
return interceptor(ctx, in, info, handler)
}
func _Query_GranterGrants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryGranterGrantsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(QueryServer).GranterGrants(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/cosmos.authz.v1beta1.Query/GranterGrants",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(QueryServer).GranterGrants(ctx, req.(*QueryGranterGrantsRequest))
}
return interceptor(ctx, in, info, handler)
}
var _Query_serviceDesc = grpc.ServiceDesc{
ServiceName: "cosmos.authz.v1beta1.Query",
HandlerType: (*QueryServer)(nil),
@ -270,6 +419,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{
MethodName: "Grants",
Handler: _Query_Grants_Handler,
},
{
MethodName: "GranterGrants",
Handler: _Query_GranterGrants_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "cosmos/authz/v1beta1/query.proto",
@ -380,6 +533,97 @@ func (m *QueryGrantsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *QueryGranterGrantsRequest) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *QueryGranterGrantsRequest) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *QueryGranterGrantsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.Pagination != nil {
{
size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintQuery(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x12
}
if len(m.Granter) > 0 {
i -= len(m.Granter)
copy(dAtA[i:], m.Granter)
i = encodeVarintQuery(dAtA, i, uint64(len(m.Granter)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *QueryGranterGrantsResponse) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *QueryGranterGrantsResponse) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *QueryGranterGrantsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.Pagination != nil {
{
size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintQuery(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x12
}
if len(m.Grants) > 0 {
for iNdEx := len(m.Grants) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.Grants[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintQuery(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0xa
}
}
return len(dAtA) - i, nil
}
func encodeVarintQuery(dAtA []byte, offset int, v uint64) int {
offset -= sovQuery(v)
base := offset
@ -435,6 +679,42 @@ func (m *QueryGrantsResponse) Size() (n int) {
return n
}
func (m *QueryGranterGrantsRequest) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Granter)
if l > 0 {
n += 1 + l + sovQuery(uint64(l))
}
if m.Pagination != nil {
l = m.Pagination.Size()
n += 1 + l + sovQuery(uint64(l))
}
return n
}
func (m *QueryGranterGrantsResponse) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if len(m.Grants) > 0 {
for _, e := range m.Grants {
l = e.Size()
n += 1 + l + sovQuery(uint64(l))
}
}
if m.Pagination != nil {
l = m.Pagination.Size()
n += 1 + l + sovQuery(uint64(l))
}
return n
}
func sovQuery(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
@ -743,6 +1023,244 @@ func (m *QueryGrantsResponse) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *QueryGranterGrantsRequest) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: QueryGranterGrantsRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: QueryGranterGrantsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Granter", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Granter = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Pagination == nil {
m.Pagination = &query.PageRequest{}
}
if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipQuery(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthQuery
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *QueryGranterGrantsResponse) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: QueryGranterGrantsResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: QueryGranterGrantsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Grants", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Grants = append(m.Grants, &Grant{})
if err := m.Grants[len(m.Grants)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Pagination == nil {
m.Pagination = &query.PageResponse{}
}
if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipQuery(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthQuery
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipQuery(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0

View File

@ -67,6 +67,78 @@ func local_request_Query_Grants_0(ctx context.Context, marshaler runtime.Marshal
}
var (
filter_Query_GranterGrants_0 = &utilities.DoubleArray{Encoding: map[string]int{"granter": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
)
func request_Query_GranterGrants_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryGranterGrantsRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["granter"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "granter")
}
protoReq.Granter, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "granter", err)
}
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_GranterGrants_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.GranterGrants(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_Query_GranterGrants_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryGranterGrantsRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["granter"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "granter")
}
protoReq.Granter, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "granter", err)
}
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_GranterGrants_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.GranterGrants(ctx, &protoReq)
return msg, metadata, err
}
// RegisterQueryHandlerServer registers the http handlers for service Query to "mux".
// UnaryRPC :call QueryServer directly.
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
@ -93,6 +165,26 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
})
mux.Handle("GET", pattern_Query_GranterGrants_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_Query_GranterGrants_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Query_GranterGrants_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
@ -154,13 +246,37 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
})
mux.Handle("GET", pattern_Query_GranterGrants_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_Query_GranterGrants_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Query_GranterGrants_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
var (
pattern_Query_Grants_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "authz", "v1beta1", "grants"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_GranterGrants_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "authz", "v1beta1", "grants", "granter"}, "", runtime.AssumeColonVerbOpt(false)))
)
var (
forward_Query_Grants_0 = runtime.ForwardResponseMessage
forward_Query_GranterGrants_0 = runtime.ForwardResponseMessage
)