feat: add grants by grantee authz query (#10944)

This commit is contained in:
Callum Waters
2022-02-10 16:56:44 +01:00
committed by GitHub
parent 58597139fa
commit fa8099da98
24 changed files with 3475 additions and 1334 deletions
+316 -6
View File
@@ -109,15 +109,58 @@ func (m *Grant) XXX_DiscardUnknown() {
var xxx_messageInfo_Grant proto.InternalMessageInfo
// GrantAuthorization extends a grant with both the addresses of the grantee and granter.
// It is used in genesis.proto and query.proto
type GrantAuthorization struct {
Granter string `protobuf:"bytes,1,opt,name=granter,proto3" json:"granter,omitempty"`
Grantee string `protobuf:"bytes,2,opt,name=grantee,proto3" json:"grantee,omitempty"`
Authorization *types.Any `protobuf:"bytes,3,opt,name=authorization,proto3" json:"authorization,omitempty"`
Expiration time.Time `protobuf:"bytes,4,opt,name=expiration,proto3,stdtime" json:"expiration"`
}
func (m *GrantAuthorization) Reset() { *m = GrantAuthorization{} }
func (m *GrantAuthorization) String() string { return proto.CompactTextString(m) }
func (*GrantAuthorization) ProtoMessage() {}
func (*GrantAuthorization) Descriptor() ([]byte, []int) {
return fileDescriptor_544dc2e84b61c637, []int{2}
}
func (m *GrantAuthorization) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *GrantAuthorization) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_GrantAuthorization.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 *GrantAuthorization) XXX_Merge(src proto.Message) {
xxx_messageInfo_GrantAuthorization.Merge(m, src)
}
func (m *GrantAuthorization) XXX_Size() int {
return m.Size()
}
func (m *GrantAuthorization) XXX_DiscardUnknown() {
xxx_messageInfo_GrantAuthorization.DiscardUnknown(m)
}
var xxx_messageInfo_GrantAuthorization proto.InternalMessageInfo
func init() {
proto.RegisterType((*GenericAuthorization)(nil), "cosmos.authz.v1beta1.GenericAuthorization")
proto.RegisterType((*Grant)(nil), "cosmos.authz.v1beta1.Grant")
proto.RegisterType((*GrantAuthorization)(nil), "cosmos.authz.v1beta1.GrantAuthorization")
}
func init() { proto.RegisterFile("cosmos/authz/v1beta1/authz.proto", fileDescriptor_544dc2e84b61c637) }
var fileDescriptor_544dc2e84b61c637 = []byte{
// 301 bytes of a gzipped FileDescriptorProto
// 364 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x48, 0xce, 0x2f, 0xce,
0xcd, 0x2f, 0xd6, 0x4f, 0x2c, 0x2d, 0xc9, 0xa8, 0xd2, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34,
0x84, 0xf0, 0xf4, 0x0a, 0x8a, 0xf2, 0x4b, 0xf2, 0x85, 0x44, 0x20, 0x2a, 0xf4, 0x20, 0x62, 0x50,
@@ -132,11 +175,15 @@ var fileDescriptor_544dc2e84b61c637 = []byte{
0x41, 0x6c, 0xd6, 0x83, 0xd9, 0xac, 0xe7, 0x98, 0x57, 0xe9, 0x84, 0x69, 0x52, 0x10, 0xaa, 0x6e,
0x21, 0x17, 0x2e, 0xae, 0xd4, 0x8a, 0x82, 0xcc, 0x22, 0x88, 0x59, 0x4c, 0x60, 0xb3, 0xa4, 0x30,
0xcc, 0x0a, 0x81, 0x79, 0xde, 0x89, 0xe3, 0xc4, 0x3d, 0x79, 0x86, 0x09, 0xf7, 0xe5, 0x19, 0x83,
0x90, 0xf4, 0x39, 0x39, 0x9d, 0x78, 0x28, 0xc7, 0x70, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72,
0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7,
0x72, 0x0c, 0x51, 0x2a, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xd0, 0x40,
0x86, 0x52, 0xba, 0xc5, 0x29, 0xd9, 0xfa, 0x15, 0x90, 0x88, 0x4a, 0x62, 0x03, 0xdb, 0x66, 0x0c,
0x08, 0x00, 0x00, 0xff, 0xff, 0x46, 0xfb, 0xa1, 0x7a, 0xcd, 0x01, 0x00, 0x00,
0x90, 0xf4, 0x29, 0x4d, 0x64, 0xe2, 0x12, 0x02, 0x3b, 0x0f, 0xd5, 0x6b, 0x46, 0x5c, 0xec, 0xe9,
0x20, 0xd1, 0xd4, 0x22, 0x88, 0xf7, 0x9c, 0x24, 0x2e, 0x6d, 0xd1, 0x85, 0x45, 0x85, 0x63, 0x4a,
0x4a, 0x51, 0x6a, 0x71, 0x71, 0x70, 0x49, 0x51, 0x66, 0x5e, 0x7a, 0x10, 0x4c, 0x21, 0x42, 0x4f,
0x2a, 0xd8, 0x35, 0x44, 0xe8, 0x49, 0xc5, 0x0c, 0x13, 0x66, 0x2a, 0x86, 0x09, 0x0b, 0x79, 0x61,
0xe2, 0xe4, 0x74, 0xe2, 0xa1, 0x1c, 0xc3, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e,
0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31,
0x44, 0xa9, 0xa4, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0x42, 0x13, 0x1e, 0x94,
0xd2, 0x2d, 0x4e, 0xc9, 0xd6, 0xaf, 0x80, 0x24, 0xde, 0x24, 0x36, 0xb0, 0x6d, 0xc6, 0x80, 0x00,
0x00, 0x00, 0xff, 0xff, 0x37, 0xff, 0xb8, 0x9b, 0xe1, 0x02, 0x00, 0x00,
}
func (m *GenericAuthorization) Marshal() (dAtA []byte, err error) {
@@ -212,6 +259,63 @@ func (m *Grant) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *GrantAuthorization) 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 *GrantAuthorization) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *GrantAuthorization) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
n3, err3 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expiration, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expiration):])
if err3 != nil {
return 0, err3
}
i -= n3
i = encodeVarintAuthz(dAtA, i, uint64(n3))
i--
dAtA[i] = 0x22
if m.Authorization != nil {
{
size, err := m.Authorization.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintAuthz(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x1a
}
if len(m.Grantee) > 0 {
i -= len(m.Grantee)
copy(dAtA[i:], m.Grantee)
i = encodeVarintAuthz(dAtA, i, uint64(len(m.Grantee)))
i--
dAtA[i] = 0x12
}
if len(m.Granter) > 0 {
i -= len(m.Granter)
copy(dAtA[i:], m.Granter)
i = encodeVarintAuthz(dAtA, i, uint64(len(m.Granter)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func encodeVarintAuthz(dAtA []byte, offset int, v uint64) int {
offset -= sovAuthz(v)
base := offset
@@ -251,6 +355,29 @@ func (m *Grant) Size() (n int) {
return n
}
func (m *GrantAuthorization) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Granter)
if l > 0 {
n += 1 + l + sovAuthz(uint64(l))
}
l = len(m.Grantee)
if l > 0 {
n += 1 + l + sovAuthz(uint64(l))
}
if m.Authorization != nil {
l = m.Authorization.Size()
n += 1 + l + sovAuthz(uint64(l))
}
l = github_com_gogo_protobuf_types.SizeOfStdTime(m.Expiration)
n += 1 + l + sovAuthz(uint64(l))
return n
}
func sovAuthz(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
@@ -458,6 +585,189 @@ func (m *Grant) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *GrantAuthorization) 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 ErrIntOverflowAuthz
}
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: GrantAuthorization: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: GrantAuthorization: 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 ErrIntOverflowAuthz
}
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 ErrInvalidLengthAuthz
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthAuthz
}
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 Grantee", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAuthz
}
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 ErrInvalidLengthAuthz
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthAuthz
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Grantee = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Authorization", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAuthz
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthAuthz
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthAuthz
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Authorization == nil {
m.Authorization = &types.Any{}
}
if err := m.Authorization.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Expiration", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAuthz
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthAuthz
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthAuthz
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.Expiration, dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipAuthz(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthAuthz
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipAuthz(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0
+49
View File
@@ -28,6 +28,7 @@ func GetQueryCmd() *cobra.Command {
authorizationQueryCmd.AddCommand(
GetCmdQueryGrants(),
GetQueryGranterGrants(),
GetQueryGranteeGrants(),
)
return authorizationQueryCmd
@@ -140,3 +141,51 @@ $ %s q %s granter-grants cosmos1skj..
flags.AddPaginationFlagsToCmd(cmd, "granter-grants")
return cmd
}
func GetQueryGranteeGrants() *cobra.Command {
cmd := &cobra.Command{
Use: "grantee-grants [grantee-addr]",
Args: cobra.ExactArgs(1),
Short: "query authorization grants granted to a grantee",
Long: strings.TrimSpace(
fmt.Sprintf(`Query authorization grants granted to a grantee.
Examples:
$ %s q %s grantee-grants cosmos1skj..
`,
version.AppName, authz.ModuleName),
),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
grantee, 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.GranteeGrants(
cmd.Context(),
&authz.QueryGranteeGrantsRequest{
Grantee: grantee.String(),
Pagination: pageReq,
},
)
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
flags.AddQueryFlagsToCmd(cmd)
flags.AddPaginationFlagsToCmd(cmd, "grantee-grants")
return cmd
}
+1
View File
@@ -1,3 +1,4 @@
//go:build norace
// +build norace
package testutil
+64 -13
View File
@@ -148,7 +148,9 @@ func (s *IntegrationTestSuite) TestQueryGrantsGRPC() {
tc := tc
s.Run(tc.name, func() {
tc.preRun()
resp, _ := rest.GetRequest(tc.url)
resp, err := rest.GetRequest(tc.url)
s.Require().NoError(err)
if tc.expectErr {
s.Require().Contains(string(resp), tc.errMsg)
} else {
@@ -176,28 +178,21 @@ func (s *IntegrationTestSuite) TestQueryGranterGrantsGRPC() {
}{
{
"invalid account address",
fmt.Sprintf("%s/cosmos/authz/v1beta1/grants/%s", val.APIAddress, "invalid address"),
fmt.Sprintf("%s/cosmos/authz/v1beta1/grants/granter/%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()),
fmt.Sprintf("%s/cosmos/authz/v1beta1/grants/granter/%s", val.APIAddress, grantee.String()),
false,
"",
0,
},
{
"valid query",
fmt.Sprintf("%s/cosmos/authz/v1beta1/grants/%s", val.APIAddress, val.Address.String()),
false,
"",
7,
},
{
"valid query: expect seven grants",
fmt.Sprintf("%s/cosmos/authz/v1beta1/grants/%s", val.APIAddress, val.Address.String()),
fmt.Sprintf("%s/cosmos/authz/v1beta1/grants/granter/%s", val.APIAddress, val.Address.String()),
false,
"",
7,
@@ -205,13 +200,69 @@ func (s *IntegrationTestSuite) TestQueryGranterGrantsGRPC() {
}
for _, tc := range testCases {
s.Run(tc.name, func() {
resp, _ := rest.GetRequest(tc.url)
resp, err := rest.GetRequest(tc.url)
require.NoError(err)
if tc.expectErr {
require.Contains(string(resp), tc.errMsg)
} else {
var authorizations authz.QueryGrantsResponse
var authorizations authz.QueryGranterGrantsResponse
err := val.ClientCtx.Codec.UnmarshalJSON(resp, &authorizations)
require.NoError(err)
// FIXME: https://github.com/cosmos/cosmos-sdk/issues/10965
require.Len(authorizations.Grants, tc.numItems)
}
})
}
}
func (s *IntegrationTestSuite) TestQueryGranteeGrantsGRPC() {
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/grantee/%s", val.APIAddress, "invalid address"),
true,
"decoding bech32 failed",
0,
},
{
"no authorizations found",
fmt.Sprintf("%s/cosmos/authz/v1beta1/grants/grantee/%s", val.APIAddress, val.Address.String()),
false,
"",
0,
},
{
"valid query",
fmt.Sprintf("%s/cosmos/authz/v1beta1/grants/grantee/%s", val.APIAddress, grantee.String()),
false,
"",
1,
},
}
for _, tc := range testCases {
s.Run(tc.name, func() {
resp, err := rest.GetRequest(tc.url)
require.NoError(err)
if tc.expectErr {
require.Contains(string(resp), tc.errMsg)
} else {
var authorizations authz.QueryGranteeGrantsResponse
err := val.ClientCtx.Codec.UnmarshalJSON(resp, &authorizations)
require.NoError(err)
// FIXME: https://github.com/cosmos/cosmos-sdk/issues/10965
require.Len(authorizations.Grants, tc.numItems)
}
+18 -361
View File
@@ -6,22 +6,19 @@ package authz
import (
fmt "fmt"
_ "github.com/cosmos/cosmos-proto"
types "github.com/cosmos/cosmos-sdk/codec/types"
_ "github.com/cosmos/cosmos-sdk/codec/types"
_ "github.com/gogo/protobuf/gogoproto"
proto "github.com/gogo/protobuf/proto"
github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
_ "google.golang.org/protobuf/types/known/timestamppb"
io "io"
math "math"
math_bits "math/bits"
time "time"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
var _ = time.Kitchen
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
@@ -74,78 +71,8 @@ func (m *GenesisState) GetAuthorization() []GrantAuthorization {
return nil
}
// GrantAuthorization defines the GenesisState/GrantAuthorization type.
type GrantAuthorization struct {
Granter string `protobuf:"bytes,1,opt,name=granter,proto3" json:"granter,omitempty"`
Grantee string `protobuf:"bytes,2,opt,name=grantee,proto3" json:"grantee,omitempty"`
Authorization *types.Any `protobuf:"bytes,3,opt,name=authorization,proto3" json:"authorization,omitempty"`
Expiration time.Time `protobuf:"bytes,4,opt,name=expiration,proto3,stdtime" json:"expiration"`
}
func (m *GrantAuthorization) Reset() { *m = GrantAuthorization{} }
func (m *GrantAuthorization) String() string { return proto.CompactTextString(m) }
func (*GrantAuthorization) ProtoMessage() {}
func (*GrantAuthorization) Descriptor() ([]byte, []int) {
return fileDescriptor_4c2fbb971da7c892, []int{1}
}
func (m *GrantAuthorization) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *GrantAuthorization) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_GrantAuthorization.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 *GrantAuthorization) XXX_Merge(src proto.Message) {
xxx_messageInfo_GrantAuthorization.Merge(m, src)
}
func (m *GrantAuthorization) XXX_Size() int {
return m.Size()
}
func (m *GrantAuthorization) XXX_DiscardUnknown() {
xxx_messageInfo_GrantAuthorization.DiscardUnknown(m)
}
var xxx_messageInfo_GrantAuthorization proto.InternalMessageInfo
func (m *GrantAuthorization) GetGranter() string {
if m != nil {
return m.Granter
}
return ""
}
func (m *GrantAuthorization) GetGrantee() string {
if m != nil {
return m.Grantee
}
return ""
}
func (m *GrantAuthorization) GetAuthorization() *types.Any {
if m != nil {
return m.Authorization
}
return nil
}
func (m *GrantAuthorization) GetExpiration() time.Time {
if m != nil {
return m.Expiration
}
return time.Time{}
}
func init() {
proto.RegisterType((*GenesisState)(nil), "cosmos.authz.v1beta1.GenesisState")
proto.RegisterType((*GrantAuthorization)(nil), "cosmos.authz.v1beta1.GrantAuthorization")
}
func init() {
@@ -153,30 +80,23 @@ func init() {
}
var fileDescriptor_4c2fbb971da7c892 = []byte{
// 358 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xbd, 0x6e, 0xea, 0x30,
0x1c, 0xc5, 0x63, 0x40, 0xf7, 0xc3, 0x5c, 0x86, 0x1b, 0x31, 0xa4, 0x0c, 0x01, 0xa1, 0x0e, 0x59,
0xb0, 0x05, 0xdd, 0x2b, 0x11, 0x55, 0x62, 0xea, 0x02, 0x4c, 0x5d, 0x2a, 0x87, 0xb8, 0xc6, 0x6a,
0x13, 0x23, 0xdb, 0x54, 0xc0, 0x53, 0xd0, 0x77, 0xe1, 0x21, 0x50, 0x27, 0xd4, 0xa9, 0x53, 0x5b,
0xc1, 0x8b, 0x54, 0x89, 0x13, 0x95, 0x8f, 0x0e, 0x9d, 0xe2, 0xc4, 0xbf, 0x73, 0xfe, 0xc7, 0xc7,
0x81, 0xcd, 0x91, 0x50, 0x91, 0x50, 0x98, 0x4c, 0xf5, 0x78, 0x81, 0x1f, 0xdb, 0x01, 0xd5, 0xa4,
0x8d, 0x19, 0x8d, 0xa9, 0xe2, 0x0a, 0x4d, 0xa4, 0xd0, 0xc2, 0xae, 0x1a, 0x06, 0xa5, 0x0c, 0xca,
0x98, 0x5a, 0x9d, 0x09, 0xc1, 0x1e, 0x28, 0x4e, 0x99, 0x60, 0x7a, 0x87, 0x35, 0x8f, 0xa8, 0xd2,
0x24, 0x9a, 0x18, 0x59, 0xed, 0xec, 0x18, 0x20, 0xf1, 0x3c, 0xdb, 0xaa, 0x32, 0xc1, 0x44, 0xba,
0xc4, 0xc9, 0x2a, 0x17, 0x98, 0x39, 0xb7, 0x66, 0x23, 0x1b, 0x9a, 0xbe, 0x34, 0x43, 0xf8, 0xaf,
0x67, 0x32, 0x0d, 0x34, 0xd1, 0xd4, 0x1e, 0xc2, 0x4a, 0x92, 0x46, 0x48, 0xbe, 0x20, 0x9a, 0x8b,
0xd8, 0x01, 0x8d, 0xa2, 0x57, 0xee, 0x78, 0xe8, 0xbb, 0xa8, 0xa8, 0x27, 0x49, 0xac, 0xbb, 0xfb,
0xbc, 0x5f, 0x5a, 0xbf, 0xd5, 0xad, 0xfe, 0xa1, 0x49, 0xf3, 0xa9, 0x00, 0xed, 0x53, 0xd6, 0xee,
0xc0, 0xdf, 0x2c, 0xf9, 0x4a, 0xa5, 0x03, 0x1a, 0xc0, 0xfb, 0xeb, 0x3b, 0x2f, 0xab, 0x56, 0x5e,
0x4a, 0x37, 0x0c, 0x25, 0x55, 0x6a, 0xa0, 0x25, 0x8f, 0x59, 0x3f, 0x07, 0xbf, 0x34, 0xd4, 0x29,
0xfc, 0x4c, 0x43, 0xed, 0xeb, 0xe3, 0x43, 0x15, 0x1b, 0xc0, 0x2b, 0x77, 0xaa, 0xc8, 0x14, 0x89,
0xf2, 0x22, 0x51, 0x37, 0x9e, 0xfb, 0xff, 0x9f, 0x57, 0xad, 0xca, 0x41, 0xce, 0xa3, 0xd3, 0xd8,
0x57, 0x10, 0xd2, 0xd9, 0x84, 0x4b, 0xe3, 0x55, 0x4a, 0xbd, 0x6a, 0x27, 0x5e, 0xc3, 0xfc, 0xd6,
0xfc, 0x3f, 0x49, 0x25, 0xcb, 0xf7, 0x3a, 0xe8, 0xef, 0xe9, 0xfc, 0xcb, 0xf5, 0xd6, 0x05, 0x9b,
0xad, 0x0b, 0x3e, 0xb6, 0x2e, 0x58, 0xee, 0x5c, 0x6b, 0xb3, 0x73, 0xad, 0xd7, 0x9d, 0x6b, 0xdd,
0x9c, 0x33, 0xae, 0xc7, 0xd3, 0x00, 0x8d, 0x44, 0x94, 0x5d, 0x56, 0xf6, 0x68, 0xa9, 0xf0, 0x1e,
0xcf, 0xcc, 0x2f, 0x15, 0xfc, 0x4a, 0x27, 0x5d, 0x7c, 0x06, 0x00, 0x00, 0xff, 0xff, 0x6e, 0xaf,
0x1e, 0x75, 0x69, 0x02, 0x00, 0x00,
// 247 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4a, 0xce, 0x2f, 0xce,
0xcd, 0x2f, 0xd6, 0x4f, 0x2c, 0x2d, 0xc9, 0xa8, 0xd2, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34,
0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12,
0x81, 0xa8, 0xd1, 0x03, 0xab, 0xd1, 0x83, 0xaa, 0x91, 0x92, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49,
0xd5, 0x07, 0xab, 0x49, 0x2a, 0x4d, 0xd3, 0x2f, 0xc9, 0xcc, 0x4d, 0x2d, 0x2e, 0x49, 0xcc, 0x2d,
0x80, 0x68, 0x93, 0x92, 0x44, 0x57, 0x90, 0x98, 0x57, 0x09, 0x95, 0x12, 0x49, 0xcf, 0x4f, 0xcf,
0x07, 0x33, 0xf5, 0x41, 0x2c, 0x98, 0x06, 0x88, 0x3d, 0xf1, 0x10, 0x09, 0xa8, 0xa5, 0x10, 0x29,
0x05, 0xac, 0xce, 0x84, 0x38, 0x08, 0xac, 0x42, 0x29, 0x85, 0x8b, 0xc7, 0x1d, 0xe2, 0xea, 0xe0,
0x92, 0xc4, 0x92, 0x54, 0xa1, 0x10, 0x2e, 0x5e, 0x90, 0x74, 0x7e, 0x51, 0x66, 0x55, 0x62, 0x49,
0x66, 0x7e, 0x9e, 0x04, 0xa3, 0x02, 0xb3, 0x06, 0xb7, 0x91, 0x86, 0x1e, 0x36, 0xcf, 0xe8, 0xb9,
0x17, 0x25, 0xe6, 0x95, 0x38, 0x22, 0xab, 0x77, 0x62, 0x39, 0x71, 0x4f, 0x9e, 0x21, 0x08, 0xd5,
0x10, 0x27, 0xbb, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71,
0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x52, 0x49, 0xcf,
0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0x85, 0x3a, 0x1d, 0x4a, 0xe9, 0x16, 0xa7, 0x64,
0xeb, 0x57, 0x40, 0xdc, 0x9a, 0xc4, 0x06, 0x76, 0xac, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x22,
0xa6, 0xf4, 0x0b, 0x77, 0x01, 0x00, 0x00,
}
func (m *GenesisState) Marshal() (dAtA []byte, err error) {
@@ -216,63 +136,6 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *GrantAuthorization) 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 *GrantAuthorization) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *GrantAuthorization) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
n1, err1 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expiration, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expiration):])
if err1 != nil {
return 0, err1
}
i -= n1
i = encodeVarintGenesis(dAtA, i, uint64(n1))
i--
dAtA[i] = 0x22
if m.Authorization != nil {
{
size, err := m.Authorization.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintGenesis(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x1a
}
if len(m.Grantee) > 0 {
i -= len(m.Grantee)
copy(dAtA[i:], m.Grantee)
i = encodeVarintGenesis(dAtA, i, uint64(len(m.Grantee)))
i--
dAtA[i] = 0x12
}
if len(m.Granter) > 0 {
i -= len(m.Granter)
copy(dAtA[i:], m.Granter)
i = encodeVarintGenesis(dAtA, i, uint64(len(m.Granter)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int {
offset -= sovGenesis(v)
base := offset
@@ -299,29 +162,6 @@ func (m *GenesisState) Size() (n int) {
return n
}
func (m *GrantAuthorization) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Granter)
if l > 0 {
n += 1 + l + sovGenesis(uint64(l))
}
l = len(m.Grantee)
if l > 0 {
n += 1 + l + sovGenesis(uint64(l))
}
if m.Authorization != nil {
l = m.Authorization.Size()
n += 1 + l + sovGenesis(uint64(l))
}
l = github_com_gogo_protobuf_types.SizeOfStdTime(m.Expiration)
n += 1 + l + sovGenesis(uint64(l))
return n
}
func sovGenesis(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
@@ -412,189 +252,6 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *GrantAuthorization) 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 ErrIntOverflowGenesis
}
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: GrantAuthorization: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: GrantAuthorization: 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 ErrIntOverflowGenesis
}
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 ErrInvalidLengthGenesis
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthGenesis
}
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 Grantee", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenesis
}
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 ErrInvalidLengthGenesis
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthGenesis
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Grantee = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Authorization", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenesis
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthGenesis
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthGenesis
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Authorization == nil {
m.Authorization = &types.Any{}
}
if err := m.Authorization.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Expiration", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenesis
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthGenesis
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthGenesis
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.Expiration, dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenesis(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthGenesis
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipGenesis(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0
+58 -2
View File
@@ -105,7 +105,7 @@ func (k Keeper) GranterGrants(c context.Context, req *authz.QueryGranterGrantsRe
store := ctx.KVStore(k.storeKey)
authzStore := prefix.NewStore(store, grantStoreKey(nil, granter, ""))
var authorizations []*authz.Grant
var grants []*authz.GrantAuthorization
pageRes, err := query.FilteredPaginate(authzStore, req.Pagination, func(key []byte, value []byte,
accumulate bool) (bool, error) {
auth, err := unmarshalAuthorization(k.cdc, value)
@@ -120,7 +120,10 @@ func (k Keeper) GranterGrants(c context.Context, req *authz.QueryGranterGrantsRe
return false, status.Errorf(codes.Internal, err.Error())
}
authorizations = append(authorizations, &authz.Grant{
grantee := firstAddressFromGrantStoreKey(key)
grants = append(grants, &authz.GrantAuthorization{
Granter: granter.String(),
Grantee: grantee.String(),
Authorization: any,
Expiration: auth.Expiration,
})
@@ -132,6 +135,59 @@ func (k Keeper) GranterGrants(c context.Context, req *authz.QueryGranterGrantsRe
}
return &authz.QueryGranterGrantsResponse{
Grants: grants,
Pagination: pageRes,
}, nil
}
// GranteeGrants implements the Query/GranteeGrants gRPC method.
func (k Keeper) GranteeGrants(c context.Context, req *authz.QueryGranteeGrantsRequest) (*authz.QueryGranteeGrantsResponse, error) {
if req == nil {
return nil, status.Errorf(codes.InvalidArgument, "empty request")
}
grantee, err := sdk.AccAddressFromBech32(req.Grantee)
if err != nil {
return nil, err
}
ctx := sdk.UnwrapSDKContext(c)
store := prefix.NewStore(ctx.KVStore(k.storeKey), GrantKey)
var authorizations []*authz.GrantAuthorization
pageRes, err := query.FilteredPaginate(store, req.Pagination, func(key []byte, value []byte,
accumulate bool) (bool, error) {
auth, err := unmarshalAuthorization(k.cdc, value)
if err != nil {
return false, err
}
granter, g := addressesFromGrantStoreKey(append(GrantKey, key...))
if !g.Equals(grantee) {
return false, nil
}
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.GrantAuthorization{
Authorization: any,
Expiration: auth.Expiration,
Granter: granter.String(),
Grantee: grantee.String(),
})
}
return true, nil
})
if err != nil {
return nil, err
}
return &authz.QueryGranteeGrantsResponse{
Grants: authorizations,
Pagination: pageRes,
}, nil
+76
View File
@@ -239,3 +239,79 @@ func (suite *TestSuite) TestGRPCQueryGranterGrants() {
})
}
}
func (suite *TestSuite) TestGRPCQueryGranteeGrants() {
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.QueryGranteeGrantsRequest
numItems int
}{
{
"fail invalid granter addr",
func() {},
true,
authz.QueryGranteeGrantsRequest{},
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[0], addrs[1], authorization, now.Add(time.Hour))
require.NoError(err)
},
false,
authz.QueryGranteeGrantsRequest{
Grantee: 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[0], addrs[2], authorization, now.Add(time.Hour))
require.NoError(err)
},
false,
authz.QueryGranteeGrantsRequest{
Grantee: addrs[0].String(),
},
2,
},
{
"valid case, pagination",
func() {},
false,
authz.QueryGranteeGrantsRequest{
Grantee: 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.GranteeGrants(gocontext.Background(), &tc.request)
if tc.expError {
require.Error(err)
} else {
require.NoError(err)
require.Len(result.Grants, tc.numItems)
}
})
}
}
+6
View File
@@ -49,3 +49,9 @@ func addressesFromGrantStoreKey(key []byte) (granterAddr, granteeAddr sdk.AccAdd
return granterAddr, granteeAddr
}
// firstAddressFromGrantStoreKey parses the first address only
func firstAddressFromGrantStoreKey(key []byte) sdk.AccAddress {
addrLen := key[0]
return sdk.AccAddress(key[1 : 1+addrLen])
}
+563 -37
View File
@@ -212,8 +212,8 @@ func (m *QueryGranterGrantsRequest) GetPagination() *query.PageRequest {
// 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"`
// grants is a list of grants granted by the granter.
Grants []*GrantAuthorization `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"`
}
@@ -251,7 +251,7 @@ func (m *QueryGranterGrantsResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryGranterGrantsResponse proto.InternalMessageInfo
func (m *QueryGranterGrantsResponse) GetGrants() []*Grant {
func (m *QueryGranterGrantsResponse) GetGrants() []*GrantAuthorization {
if m != nil {
return m.Grants
}
@@ -265,47 +265,162 @@ func (m *QueryGranterGrantsResponse) GetPagination() *query.PageResponse {
return nil
}
// QueryGranteeGrantsRequest is the request type for the Query/IssuedGrants RPC method.
type QueryGranteeGrantsRequest struct {
Grantee string `protobuf:"bytes,1,opt,name=grantee,proto3" json:"grantee,omitempty"`
// pagination defines an pagination for the request.
Pagination *query.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
}
func (m *QueryGranteeGrantsRequest) Reset() { *m = QueryGranteeGrantsRequest{} }
func (m *QueryGranteeGrantsRequest) String() string { return proto.CompactTextString(m) }
func (*QueryGranteeGrantsRequest) ProtoMessage() {}
func (*QueryGranteeGrantsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_376d714ffdeb1545, []int{4}
}
func (m *QueryGranteeGrantsRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *QueryGranteeGrantsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_QueryGranteeGrantsRequest.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 *QueryGranteeGrantsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryGranteeGrantsRequest.Merge(m, src)
}
func (m *QueryGranteeGrantsRequest) XXX_Size() int {
return m.Size()
}
func (m *QueryGranteeGrantsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_QueryGranteeGrantsRequest.DiscardUnknown(m)
}
var xxx_messageInfo_QueryGranteeGrantsRequest proto.InternalMessageInfo
func (m *QueryGranteeGrantsRequest) GetGrantee() string {
if m != nil {
return m.Grantee
}
return ""
}
func (m *QueryGranteeGrantsRequest) GetPagination() *query.PageRequest {
if m != nil {
return m.Pagination
}
return nil
}
// QueryGranteeGrantsResponse is the response type for the Query/GranteeGrants RPC method.
type QueryGranteeGrantsResponse struct {
// grants is a list of grants granted to the grantee.
Grants []*GrantAuthorization `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 *QueryGranteeGrantsResponse) Reset() { *m = QueryGranteeGrantsResponse{} }
func (m *QueryGranteeGrantsResponse) String() string { return proto.CompactTextString(m) }
func (*QueryGranteeGrantsResponse) ProtoMessage() {}
func (*QueryGranteeGrantsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_376d714ffdeb1545, []int{5}
}
func (m *QueryGranteeGrantsResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *QueryGranteeGrantsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_QueryGranteeGrantsResponse.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 *QueryGranteeGrantsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryGranteeGrantsResponse.Merge(m, src)
}
func (m *QueryGranteeGrantsResponse) XXX_Size() int {
return m.Size()
}
func (m *QueryGranteeGrantsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_QueryGranteeGrantsResponse.DiscardUnknown(m)
}
var xxx_messageInfo_QueryGranteeGrantsResponse proto.InternalMessageInfo
func (m *QueryGranteeGrantsResponse) GetGrants() []*GrantAuthorization {
if m != nil {
return m.Grants
}
return nil
}
func (m *QueryGranteeGrantsResponse) 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")
proto.RegisterType((*QueryGranteeGrantsRequest)(nil), "cosmos.authz.v1beta1.QueryGranteeGrantsRequest")
proto.RegisterType((*QueryGranteeGrantsResponse)(nil), "cosmos.authz.v1beta1.QueryGranteeGrantsResponse")
}
func init() { proto.RegisterFile("cosmos/authz/v1beta1/query.proto", fileDescriptor_376d714ffdeb1545) }
var fileDescriptor_376d714ffdeb1545 = []byte{
// 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,
// 529 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x95, 0x41, 0x6f, 0xd3, 0x3e,
0x18, 0xc6, 0xeb, 0xf6, 0xff, 0x2f, 0xc2, 0x83, 0x8b, 0xe1, 0x90, 0x85, 0x29, 0x8a, 0xaa, 0x09,
0x0a, 0xd2, 0xec, 0xad, 0x93, 0x38, 0x22, 0xb6, 0xc3, 0x76, 0x85, 0x00, 0x17, 0x2e, 0x55, 0xba,
0xbe, 0x72, 0x23, 0xda, 0x38, 0xb3, 0x1d, 0x44, 0x87, 0x76, 0x81, 0x2f, 0x80, 0xb4, 0x03, 0x1f,
0x01, 0x89, 0x33, 0x1f, 0x82, 0xe3, 0x04, 0x17, 0x8e, 0xa8, 0x45, 0xf0, 0x35, 0x50, 0x6d, 0x97,
0xae, 0x23, 0xdb, 0x02, 0xd3, 0x24, 0x4e, 0xad, 0xa3, 0xe7, 0x7d, 0xde, 0xdf, 0xfb, 0x38, 0x76,
0x70, 0xb8, 0x23, 0xd4, 0x40, 0x28, 0x16, 0xe7, 0xba, 0xb7, 0xc7, 0x9e, 0xaf, 0x75, 0x40, 0xc7,
0x6b, 0x6c, 0x37, 0x07, 0x39, 0xa4, 0x99, 0x14, 0x5a, 0x90, 0xeb, 0x56, 0x41, 0x8d, 0x82, 0x3a,
0x85, 0xbf, 0xc4, 0x85, 0xe0, 0x7d, 0x60, 0x71, 0x96, 0xb0, 0x38, 0x4d, 0x85, 0x8e, 0x75, 0x22,
0x52, 0x65, 0x6b, 0xfc, 0x3b, 0xce, 0xb5, 0x13, 0x2b, 0xb0, 0x66, 0xbf, 0xac, 0xb3, 0x98, 0x27,
0xa9, 0x11, 0x3b, 0x6d, 0x31, 0x81, 0xed, 0x66, 0x15, 0x8b, 0x56, 0xd1, 0x36, 0x2b, 0xe6, 0x70,
0xcc, 0xa2, 0xf1, 0x1d, 0x61, 0xf2, 0x70, 0xe2, 0xbf, 0x2d, 0xe3, 0x54, 0xab, 0x08, 0x76, 0x73,
0x50, 0x9a, 0xb4, 0xf0, 0x25, 0x3e, 0x79, 0x00, 0xd2, 0x43, 0x21, 0x6a, 0x5e, 0xde, 0xf4, 0x3e,
0x7d, 0x58, 0x99, 0x0e, 0xb2, 0xd1, 0xed, 0x4a, 0x50, 0xea, 0x91, 0x96, 0x49, 0xca, 0xa3, 0xa9,
0x70, 0x56, 0x03, 0x5e, 0xb5, 0x5c, 0x0d, 0x90, 0x10, 0x5f, 0x19, 0x28, 0xde, 0xd6, 0xc3, 0x0c,
0xda, 0xb9, 0xec, 0x7b, 0xb5, 0x49, 0x61, 0x84, 0x07, 0x8a, 0x3f, 0x1e, 0x66, 0xf0, 0x44, 0xf6,
0xc9, 0x16, 0xc6, 0xb3, 0x89, 0xbd, 0xff, 0x42, 0xd4, 0x5c, 0x68, 0xdd, 0xa4, 0xce, 0x75, 0x12,
0x0f, 0xb5, 0x59, 0xbb, 0xb9, 0xe9, 0x83, 0x98, 0x83, 0x9b, 0x22, 0x3a, 0x52, 0xd9, 0x38, 0x40,
0xf8, 0xda, 0xdc, 0xa0, 0x2a, 0x13, 0xa9, 0x02, 0xb2, 0x8e, 0xeb, 0x06, 0x46, 0x79, 0x28, 0xac,
0x35, 0x17, 0x5a, 0x37, 0x68, 0xd1, 0x76, 0x51, 0x53, 0x15, 0x39, 0x29, 0xd9, 0x9e, 0x83, 0xaa,
0x1a, 0xa8, 0x5b, 0x67, 0x42, 0xd9, 0x8e, 0x73, 0x54, 0x6f, 0x11, 0x5e, 0x9c, 0x51, 0x81, 0x3c,
0xff, 0x2e, 0x6c, 0x15, 0xa0, 0xfd, 0x4d, 0x5e, 0xef, 0x10, 0xf6, 0x8b, 0xc8, 0x5c, 0x6c, 0xf7,
0x8f, 0xc5, 0xd6, 0x3c, 0x25, 0xb6, 0x8d, 0x5c, 0xf7, 0x84, 0x4c, 0xf6, 0x8c, 0xf1, 0x85, 0x67,
0x08, 0x27, 0x64, 0x08, 0x65, 0x33, 0x84, 0x8b, 0xca, 0x10, 0xfe, 0xd9, 0x0c, 0x5b, 0x3f, 0x6a,
0xf8, 0x7f, 0x43, 0x4a, 0x5e, 0x23, 0x5c, 0xb7, 0x9c, 0xe4, 0x04, 0x9e, 0xdf, 0xaf, 0x0b, 0xff,
0x76, 0x09, 0xa5, 0xed, 0xda, 0x58, 0x7e, 0xf5, 0xf9, 0xdb, 0x41, 0x35, 0x20, 0x4b, 0xac, 0xf0,
0xda, 0x72, 0x83, 0xbd, 0x47, 0xf8, 0xea, 0xdc, 0x8b, 0x47, 0xd8, 0x59, 0x2d, 0x8e, 0x1d, 0x1e,
0x7f, 0xb5, 0x7c, 0x81, 0x43, 0xbb, 0x6b, 0xd0, 0x56, 0x09, 0x3d, 0x0d, 0x8d, 0xb9, 0x83, 0xc6,
0x5e, 0xba, 0x3f, 0xfb, 0x47, 0x60, 0xa1, 0x34, 0x2c, 0xfc, 0x29, 0x2c, 0x9c, 0x03, 0x16, 0xa6,
0xb0, 0xb0, 0xbf, 0x79, 0xef, 0xe3, 0x28, 0x40, 0x87, 0xa3, 0x00, 0x7d, 0x1d, 0x05, 0xe8, 0xcd,
0x38, 0xa8, 0x1c, 0x8e, 0x83, 0xca, 0x97, 0x71, 0x50, 0x79, 0xba, 0xcc, 0x13, 0xdd, 0xcb, 0x3b,
0x74, 0x47, 0x0c, 0xa6, 0x9e, 0xf6, 0x67, 0x45, 0x75, 0x9f, 0xb1, 0x17, 0xb6, 0x41, 0xa7, 0x6e,
0xbe, 0x1b, 0xeb, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x3e, 0x8b, 0x47, 0x69, 0xf8, 0x06, 0x00,
0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -322,8 +437,14 @@ 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 returns list of `GrantAuthorization`, granted by granter.
//
// Since: cosmos-sdk 0.46
GranterGrants(ctx context.Context, in *QueryGranterGrantsRequest, opts ...grpc.CallOption) (*QueryGranterGrantsResponse, error)
// GranteeGrants returns a list of `GrantAuthorization` by grantee.
//
// Since: cosmos-sdk 0.46
GranteeGrants(ctx context.Context, in *QueryGranteeGrantsRequest, opts ...grpc.CallOption) (*QueryGranteeGrantsResponse, error)
}
type queryClient struct {
@@ -352,12 +473,27 @@ func (c *queryClient) GranterGrants(ctx context.Context, in *QueryGranterGrantsR
return out, nil
}
func (c *queryClient) GranteeGrants(ctx context.Context, in *QueryGranteeGrantsRequest, opts ...grpc.CallOption) (*QueryGranteeGrantsResponse, error) {
out := new(QueryGranteeGrantsResponse)
err := c.cc.Invoke(ctx, "/cosmos.authz.v1beta1.Query/GranteeGrants", 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 returns list of `GrantAuthorization`, granted by granter.
//
// Since: cosmos-sdk 0.46
GranterGrants(context.Context, *QueryGranterGrantsRequest) (*QueryGranterGrantsResponse, error)
// GranteeGrants returns a list of `GrantAuthorization` by grantee.
//
// Since: cosmos-sdk 0.46
GranteeGrants(context.Context, *QueryGranteeGrantsRequest) (*QueryGranteeGrantsResponse, error)
}
// UnimplementedQueryServer can be embedded to have forward compatible implementations.
@@ -370,6 +506,9 @@ func (*UnimplementedQueryServer) Grants(ctx context.Context, req *QueryGrantsReq
func (*UnimplementedQueryServer) GranterGrants(ctx context.Context, req *QueryGranterGrantsRequest) (*QueryGranterGrantsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GranterGrants not implemented")
}
func (*UnimplementedQueryServer) GranteeGrants(ctx context.Context, req *QueryGranteeGrantsRequest) (*QueryGranteeGrantsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GranteeGrants not implemented")
}
func RegisterQueryServer(s grpc1.Server, srv QueryServer) {
s.RegisterService(&_Query_serviceDesc, srv)
@@ -411,6 +550,24 @@ func _Query_GranterGrants_Handler(srv interface{}, ctx context.Context, dec func
return interceptor(ctx, in, info, handler)
}
func _Query_GranteeGrants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryGranteeGrantsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(QueryServer).GranteeGrants(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/cosmos.authz.v1beta1.Query/GranteeGrants",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(QueryServer).GranteeGrants(ctx, req.(*QueryGranteeGrantsRequest))
}
return interceptor(ctx, in, info, handler)
}
var _Query_serviceDesc = grpc.ServiceDesc{
ServiceName: "cosmos.authz.v1beta1.Query",
HandlerType: (*QueryServer)(nil),
@@ -423,6 +580,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{
MethodName: "GranterGrants",
Handler: _Query_GranterGrants_Handler,
},
{
MethodName: "GranteeGrants",
Handler: _Query_GranteeGrants_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "cosmos/authz/v1beta1/query.proto",
@@ -624,6 +785,97 @@ func (m *QueryGranterGrantsResponse) MarshalToSizedBuffer(dAtA []byte) (int, err
return len(dAtA) - i, nil
}
func (m *QueryGranteeGrantsRequest) 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 *QueryGranteeGrantsRequest) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *QueryGranteeGrantsRequest) 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.Grantee) > 0 {
i -= len(m.Grantee)
copy(dAtA[i:], m.Grantee)
i = encodeVarintQuery(dAtA, i, uint64(len(m.Grantee)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *QueryGranteeGrantsResponse) 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 *QueryGranteeGrantsResponse) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *QueryGranteeGrantsResponse) 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
@@ -715,6 +967,42 @@ func (m *QueryGranterGrantsResponse) Size() (n int) {
return n
}
func (m *QueryGranteeGrantsRequest) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Grantee)
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 *QueryGranteeGrantsResponse) 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
}
@@ -1199,7 +1487,245 @@ func (m *QueryGranterGrantsResponse) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Grants = append(m.Grants, &Grant{})
m.Grants = append(m.Grants, &GrantAuthorization{})
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 (m *QueryGranteeGrantsRequest) 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: QueryGranteeGrantsRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: QueryGranteeGrantsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Grantee", 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.Grantee = 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 *QueryGranteeGrantsResponse) 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: QueryGranteeGrantsResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: QueryGranteeGrantsResponse: 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, &GrantAuthorization{})
if err := m.Grants[len(m.Grants)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
+117 -1
View File
@@ -139,6 +139,78 @@ func local_request_Query_GranterGrants_0(ctx context.Context, marshaler runtime.
}
var (
filter_Query_GranteeGrants_0 = &utilities.DoubleArray{Encoding: map[string]int{"grantee": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
)
func request_Query_GranteeGrants_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryGranteeGrantsRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["grantee"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "grantee")
}
protoReq.Grantee, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "grantee", 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_GranteeGrants_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.GranteeGrants(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_Query_GranteeGrants_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryGranteeGrantsRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["grantee"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "grantee")
}
protoReq.Grantee, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "grantee", 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_GranteeGrants_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.GranteeGrants(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.
@@ -185,6 +257,26 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
})
mux.Handle("GET", pattern_Query_GranteeGrants_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_GranteeGrants_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_GranteeGrants_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
@@ -266,17 +358,41 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
})
mux.Handle("GET", pattern_Query_GranteeGrants_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_GranteeGrants_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_GranteeGrants_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)))
pattern_Query_GranterGrants_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "authz", "v1beta1", "grants", "granter"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_GranteeGrants_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "authz", "v1beta1", "grants", "grantee"}, "", runtime.AssumeColonVerbOpt(false)))
)
var (
forward_Query_Grants_0 = runtime.ForwardResponseMessage
forward_Query_GranterGrants_0 = runtime.ForwardResponseMessage
forward_Query_GranteeGrants_0 = runtime.ForwardResponseMessage
)