1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-08 05:57:03 +09:00

Split GetDataNameRegister and GetDataNameRegisterForSpace; Test tiers

This commit is contained in:
Anton Akentev 2024-01-24 21:36:36 +00:00
parent 4659755553
commit 1e1ce475f9
10 changed files with 502 additions and 117 deletions

View file

@ -119,7 +119,6 @@ type NameAvailableResponse struct {
// This field is non-empty only if name is "already registered" // This field is non-empty only if name is "already registered"
OwnerScwEthAddress string `protobuf:"bytes,2,opt,name=ownerScwEthAddress,proto3" json:"ownerScwEthAddress,omitempty"` OwnerScwEthAddress string `protobuf:"bytes,2,opt,name=ownerScwEthAddress,proto3" json:"ownerScwEthAddress,omitempty"`
// This field is non-empty only if name is "already registered" // This field is non-empty only if name is "already registered"
// TODO:
OwnerEthAddress string `protobuf:"bytes,3,opt,name=ownerEthAddress,proto3" json:"ownerEthAddress,omitempty"` OwnerEthAddress string `protobuf:"bytes,3,opt,name=ownerEthAddress,proto3" json:"ownerEthAddress,omitempty"`
// A content hash attached to this name // A content hash attached to this name
// This field is non-empty only if name is "already registered" // This field is non-empty only if name is "already registered"

View file

@ -608,11 +608,10 @@ func (m *CreateUserOperationRequestSigned) GetSignature() []byte {
type NameRegisterRequest struct { type NameRegisterRequest struct {
FullName string `protobuf:"bytes,1,opt,name=fullName,proto3" json:"fullName,omitempty"` FullName string `protobuf:"bytes,1,opt,name=fullName,proto3" json:"fullName,omitempty"`
// A content hash attached to this name // A content hash attached to this name
// This should not be empty!
OwnerAnyAddress string `protobuf:"bytes,2,opt,name=ownerAnyAddress,proto3" json:"ownerAnyAddress,omitempty"` OwnerAnyAddress string `protobuf:"bytes,2,opt,name=ownerAnyAddress,proto3" json:"ownerAnyAddress,omitempty"`
// An Ethereum address that owns that name // An Ethereum address that owns that name
OwnerEthAddress string `protobuf:"bytes,3,opt,name=ownerEthAddress,proto3" json:"ownerEthAddress,omitempty"` OwnerEthAddress string `protobuf:"bytes,3,opt,name=ownerEthAddress,proto3" json:"ownerEthAddress,omitempty"`
// A SpaceID attached to this name
SpaceId string `protobuf:"bytes,4,opt,name=spaceId,proto3" json:"spaceId,omitempty"`
} }
func (m *NameRegisterRequest) Reset() { *m = NameRegisterRequest{} } func (m *NameRegisterRequest) Reset() { *m = NameRegisterRequest{} }
@ -669,7 +668,72 @@ func (m *NameRegisterRequest) GetOwnerEthAddress() string {
return "" return ""
} }
func (m *NameRegisterRequest) GetSpaceId() string { type NameRegisterForSpaceRequest struct {
FullName string `protobuf:"bytes,1,opt,name=fullName,proto3" json:"fullName,omitempty"`
// A content hash attached to this name
// This should not be empty!
OwnerAnyAddress string `protobuf:"bytes,2,opt,name=ownerAnyAddress,proto3" json:"ownerAnyAddress,omitempty"`
// An Ethereum address that owns that name
OwnerEthAddress string `protobuf:"bytes,3,opt,name=ownerEthAddress,proto3" json:"ownerEthAddress,omitempty"`
// A SpaceID attached to this name
SpaceId string `protobuf:"bytes,4,opt,name=spaceId,proto3" json:"spaceId,omitempty"`
}
func (m *NameRegisterForSpaceRequest) Reset() { *m = NameRegisterForSpaceRequest{} }
func (m *NameRegisterForSpaceRequest) String() string { return proto.CompactTextString(m) }
func (*NameRegisterForSpaceRequest) ProtoMessage() {}
func (*NameRegisterForSpaceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_c9d3f9b8b141e804, []int{10}
}
func (m *NameRegisterForSpaceRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *NameRegisterForSpaceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_NameRegisterForSpaceRequest.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 *NameRegisterForSpaceRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_NameRegisterForSpaceRequest.Merge(m, src)
}
func (m *NameRegisterForSpaceRequest) XXX_Size() int {
return m.Size()
}
func (m *NameRegisterForSpaceRequest) XXX_DiscardUnknown() {
xxx_messageInfo_NameRegisterForSpaceRequest.DiscardUnknown(m)
}
var xxx_messageInfo_NameRegisterForSpaceRequest proto.InternalMessageInfo
func (m *NameRegisterForSpaceRequest) GetFullName() string {
if m != nil {
return m.FullName
}
return ""
}
func (m *NameRegisterForSpaceRequest) GetOwnerAnyAddress() string {
if m != nil {
return m.OwnerAnyAddress
}
return ""
}
func (m *NameRegisterForSpaceRequest) GetOwnerEthAddress() string {
if m != nil {
return m.OwnerEthAddress
}
return ""
}
func (m *NameRegisterForSpaceRequest) GetSpaceId() string {
if m != nil { if m != nil {
return m.SpaceId return m.SpaceId
} }
@ -684,7 +748,7 @@ func (m *GetOperationStatusRequest) Reset() { *m = GetOperationStatusReq
func (m *GetOperationStatusRequest) String() string { return proto.CompactTextString(m) } func (m *GetOperationStatusRequest) String() string { return proto.CompactTextString(m) }
func (*GetOperationStatusRequest) ProtoMessage() {} func (*GetOperationStatusRequest) ProtoMessage() {}
func (*GetOperationStatusRequest) Descriptor() ([]byte, []int) { func (*GetOperationStatusRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_c9d3f9b8b141e804, []int{10} return fileDescriptor_c9d3f9b8b141e804, []int{11}
} }
func (m *GetOperationStatusRequest) XXX_Unmarshal(b []byte) error { func (m *GetOperationStatusRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b) return m.Unmarshal(b)
@ -729,7 +793,7 @@ func (m *OperationResponse) Reset() { *m = OperationResponse{} }
func (m *OperationResponse) String() string { return proto.CompactTextString(m) } func (m *OperationResponse) String() string { return proto.CompactTextString(m) }
func (*OperationResponse) ProtoMessage() {} func (*OperationResponse) ProtoMessage() {}
func (*OperationResponse) Descriptor() ([]byte, []int) { func (*OperationResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_c9d3f9b8b141e804, []int{11} return fileDescriptor_c9d3f9b8b141e804, []int{12}
} }
func (m *OperationResponse) XXX_Unmarshal(b []byte) error { func (m *OperationResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b) return m.Unmarshal(b)
@ -784,6 +848,7 @@ func init() {
proto.RegisterType((*CreateUserOperationRequest)(nil), "CreateUserOperationRequest") proto.RegisterType((*CreateUserOperationRequest)(nil), "CreateUserOperationRequest")
proto.RegisterType((*CreateUserOperationRequestSigned)(nil), "CreateUserOperationRequestSigned") proto.RegisterType((*CreateUserOperationRequestSigned)(nil), "CreateUserOperationRequestSigned")
proto.RegisterType((*NameRegisterRequest)(nil), "NameRegisterRequest") proto.RegisterType((*NameRegisterRequest)(nil), "NameRegisterRequest")
proto.RegisterType((*NameRegisterForSpaceRequest)(nil), "NameRegisterForSpaceRequest")
proto.RegisterType((*GetOperationStatusRequest)(nil), "GetOperationStatusRequest") proto.RegisterType((*GetOperationStatusRequest)(nil), "GetOperationStatusRequest")
proto.RegisterType((*OperationResponse)(nil), "OperationResponse") proto.RegisterType((*OperationResponse)(nil), "OperationResponse")
} }
@ -793,54 +858,56 @@ func init() {
} }
var fileDescriptor_c9d3f9b8b141e804 = []byte{ var fileDescriptor_c9d3f9b8b141e804 = []byte{
// 747 bytes of a gzipped FileDescriptorProto // 781 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x5d, 0x4f, 0x13, 0x4d, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0xcd, 0x4e, 0xe3, 0x56,
0x14, 0xee, 0xd2, 0xf2, 0xd1, 0x43, 0xdf, 0x52, 0xa6, 0xc0, 0xdb, 0xb7, 0xf0, 0xae, 0x65, 0x35, 0x14, 0x8e, 0x89, 0xf9, 0xc9, 0x21, 0x0d, 0xe1, 0x06, 0x68, 0x1a, 0x52, 0x37, 0xb8, 0x55, 0x15,
0xa6, 0xf1, 0x62, 0x31, 0x98, 0x28, 0x37, 0x26, 0xae, 0x05, 0x2a, 0xc1, 0x00, 0x59, 0x24, 0x26, 0x75, 0x61, 0x2a, 0x2a, 0xb5, 0x6c, 0x2a, 0xd5, 0x0d, 0x24, 0x45, 0x54, 0x80, 0x9c, 0xa2, 0x4a,
0x10, 0x63, 0x86, 0xee, 0xa1, 0x36, 0xb6, 0x33, 0x75, 0x67, 0x2a, 0xf6, 0x5f, 0x98, 0xf8, 0x03, 0xa0, 0xaa, 0xba, 0xc4, 0x87, 0x34, 0x6a, 0x72, 0x6f, 0x7a, 0x7d, 0x53, 0x9a, 0x07, 0xe8, 0x7e,
0xbc, 0xf0, 0xcf, 0x78, 0xc9, 0xa5, 0xf1, 0xca, 0xc0, 0x1f, 0x31, 0x3b, 0x6c, 0x97, 0xdd, 0xb2, 0xa4, 0x79, 0x84, 0x59, 0xcc, 0x23, 0xcc, 0x2b, 0xcc, 0x92, 0xe5, 0x2c, 0x47, 0xf0, 0x22, 0x23,
0x6d, 0x51, 0x6e, 0x60, 0xcf, 0xb3, 0x67, 0xce, 0x79, 0x9e, 0xe7, 0xec, 0x9c, 0x14, 0xd6, 0x18, 0x5f, 0x1c, 0x63, 0x07, 0x27, 0x61, 0x86, 0xc5, 0x6c, 0x12, 0xdf, 0xcf, 0xc7, 0xe7, 0x7c, 0xe7,
0x6d, 0xa1, 0x40, 0xf7, 0x63, 0xa3, 0x86, 0x2b, 0xa1, 0xe7, 0xb6, 0xcb, 0x25, 0x5f, 0x51, 0x7f, 0x3b, 0x3e, 0x5f, 0x02, 0xbb, 0x8c, 0xf6, 0xd0, 0x43, 0xf1, 0x6f, 0xa7, 0x85, 0xdb, 0x91, 0xeb,
0x45, 0x18, 0x7f, 0x4b, 0xa9, 0xa9, 0x50, 0xe3, 0xdb, 0x18, 0x4c, 0x1f, 0x08, 0x74, 0xad, 0x5a, 0xbe, 0xe0, 0x92, 0x6f, 0xab, 0x4f, 0x2f, 0x8a, 0xff, 0x49, 0xa9, 0xa5, 0x50, 0xf3, 0xc5, 0x1c,
0x8d, 0x77, 0x98, 0x24, 0x65, 0x98, 0xe1, 0xa7, 0x0c, 0xdd, 0x0d, 0xf9, 0xce, 0x72, 0x1c, 0x17, 0x2c, 0x9f, 0x7a, 0x28, 0xec, 0x56, 0x8b, 0x0f, 0x98, 0x24, 0x55, 0x58, 0xe1, 0x57, 0x0c, 0xc5,
0x85, 0x28, 0x68, 0x25, 0xad, 0x9c, 0xb6, 0xfb, 0x61, 0xb2, 0x09, 0xba, 0x82, 0xf6, 0x5b, 0xd4, 0xbe, 0xfc, 0xcb, 0x76, 0x5d, 0x81, 0x9e, 0x57, 0xd4, 0x2a, 0x5a, 0x35, 0xe3, 0x8c, 0xc3, 0xa4,
0x95, 0x15, 0xce, 0xa4, 0x4b, 0x6b, 0xaf, 0x69, 0xb3, 0x89, 0xb2, 0x77, 0x70, 0x4c, 0x1d, 0x1c, 0x0e, 0x86, 0x82, 0x9a, 0x3d, 0x2a, 0x64, 0x8d, 0x33, 0x29, 0x68, 0xeb, 0x77, 0xda, 0xed, 0xa2,
0x91, 0x45, 0x5e, 0xc0, 0x9d, 0x01, 0x19, 0xeb, 0xd8, 0x6e, 0xf2, 0x2e, 0x3a, 0x85, 0x64, 0x49, 0x1c, 0x3d, 0x38, 0xa7, 0x1e, 0x9c, 0x11, 0x45, 0x7e, 0x81, 0x2f, 0x26, 0x44, 0xec, 0x61, 0xbf,
0x2b, 0x4f, 0xd9, 0xa3, 0xd2, 0xc8, 0x7d, 0xc8, 0x2a, 0x8d, 0x15, 0x4f, 0xc9, 0x4b, 0x3c, 0x91, 0xcb, 0x87, 0xe8, 0x16, 0xd3, 0x15, 0xad, 0xba, 0xe4, 0xcc, 0x0a, 0x23, 0x5f, 0x43, 0x4e, 0xf5,
0x85, 0x54, 0x49, 0x2b, 0xa7, 0xec, 0x3e, 0x94, 0x3c, 0x84, 0x3c, 0x6f, 0xa3, 0x4b, 0x65, 0x83, 0x58, 0xf3, 0x3b, 0xf9, 0x15, 0x2f, 0x65, 0x51, 0xaf, 0x68, 0x55, 0xdd, 0x19, 0x43, 0xc9, 0xb7,
0xb3, 0x50, 0xf2, 0xb8, 0x4a, 0x8e, 0x7b, 0x65, 0xd4, 0x61, 0xd1, 0x72, 0x5a, 0x0d, 0xb6, 0xd9, 0x50, 0xe0, 0x7d, 0x14, 0x54, 0x76, 0x38, 0x8b, 0x04, 0xcf, 0xab, 0xe0, 0xa4, 0x5b, 0x66, 0x1b,
0x61, 0x4e, 0xc8, 0x2d, 0x1b, 0x3f, 0x74, 0x50, 0xfc, 0x89, 0x69, 0x3a, 0xc0, 0x15, 0x19, 0x65, 0x36, 0x6d, 0xb7, 0xd7, 0x61, 0xf5, 0x01, 0x73, 0x23, 0x6a, 0x39, 0xf8, 0xcf, 0x00, 0xbd, 0xf7,
0x50, 0xca, 0x0e, 0x21, 0xc6, 0x11, 0x2c, 0x0f, 0x69, 0xb4, 0xdf, 0xa8, 0x33, 0x74, 0x48, 0x01, 0x11, 0xcd, 0x00, 0xb8, 0x27, 0xa3, 0x04, 0xd2, 0x9d, 0x08, 0x62, 0x9e, 0xc3, 0xd6, 0x94, 0x42,
0x26, 0xdb, 0xb4, 0xdb, 0xe4, 0xd4, 0x51, 0x6d, 0x32, 0x76, 0x2f, 0x24, 0x4b, 0x90, 0x16, 0x8d, 0xcd, 0x4e, 0x9b, 0xa1, 0x4b, 0x8a, 0xb0, 0xd8, 0xa7, 0xc3, 0x2e, 0xa7, 0xae, 0x2a, 0x93, 0x75,
0x3a, 0xa3, 0xb2, 0xe3, 0xa2, 0xaa, 0x9e, 0xb1, 0xaf, 0x00, 0xe3, 0x8b, 0x06, 0xff, 0x07, 0xd5, 0x46, 0x47, 0x52, 0x86, 0x8c, 0xd7, 0x69, 0x33, 0x2a, 0x07, 0x02, 0x55, 0xf6, 0xac, 0x73, 0x0f,
0xab, 0x54, 0xec, 0x06, 0x4a, 0xff, 0x4a, 0x88, 0x82, 0x2c, 0xd6, 0xdd, 0x5a, 0xf7, 0x27, 0x1d, 0x98, 0xcf, 0x35, 0xf8, 0x3c, 0xcc, 0xde, 0xa0, 0xde, 0x71, 0xd8, 0xe9, 0x07, 0x35, 0xa2, 0x20,
0x42, 0x54, 0xa5, 0xa8, 0x91, 0x6a, 0x8a, 0x29, 0xbb, 0x1f, 0x36, 0xde, 0xc0, 0xdd, 0xa1, 0xa4, 0x9b, 0x0d, 0x0f, 0xf6, 0x82, 0x49, 0x47, 0x10, 0x95, 0x29, 0x2e, 0xa4, 0x9a, 0xa2, 0xee, 0x8c,
0x6e, 0x29, 0xda, 0x82, 0xf9, 0x2a, 0xca, 0xdb, 0x0c, 0xcd, 0xd8, 0x86, 0xc5, 0x2a, 0xca, 0x75, 0xc3, 0xe6, 0x1f, 0xf0, 0xe5, 0x54, 0x52, 0x4f, 0x6c, 0xda, 0x86, 0xf5, 0x06, 0xca, 0xa7, 0x0c,
0x2a, 0xe9, 0x0e, 0x6d, 0xa1, 0x8d, 0xf5, 0x86, 0x90, 0xe8, 0xda, 0x28, 0xda, 0x9c, 0x09, 0x24, 0xcd, 0x3c, 0x84, 0xcd, 0x06, 0xca, 0x3d, 0x2a, 0xe9, 0x11, 0xed, 0xa1, 0x83, 0xed, 0x8e, 0x27,
0x04, 0x52, 0x0e, 0x95, 0xd4, 0xa7, 0xa5, 0x9e, 0x3d, 0xb6, 0x35, 0xce, 0x24, 0x7e, 0x92, 0x3e, 0x51, 0x38, 0xe8, 0xf5, 0x39, 0xf3, 0x90, 0x10, 0xd0, 0x5d, 0x2a, 0x69, 0x40, 0x4b, 0x5d, 0xfb,
0xa3, 0x5e, 0x68, 0x9c, 0x69, 0x50, 0xac, 0xb8, 0x48, 0x25, 0x7a, 0x9c, 0x02, 0xb5, 0x3d, 0x56, 0x6c, 0x5b, 0x9c, 0x49, 0xfc, 0x4f, 0x06, 0x8c, 0x46, 0x47, 0xf3, 0x5a, 0x83, 0x52, 0x4d, 0x20,
0x71, 0xc5, 0x74, 0x00, 0xa1, 0x4c, 0xf0, 0x28, 0xf8, 0xf5, 0x42, 0x48, 0xb8, 0x59, 0x32, 0xd2, 0x95, 0xe8, 0x73, 0x0a, 0xbb, 0x1d, 0xb1, 0x4a, 0x4a, 0x66, 0x00, 0x78, 0x4a, 0x04, 0x9f, 0x42,
0x2c, 0x4e, 0x63, 0xea, 0x26, 0xf3, 0x1c, 0xbf, 0x36, 0xcf, 0x22, 0x4c, 0x9d, 0x74, 0x9a, 0x4d, 0x90, 0x2f, 0x82, 0x44, 0x8b, 0xa5, 0x63, 0xc5, 0x92, 0x7a, 0xd4, 0x1f, 0x33, 0xcf, 0xf9, 0x07,
0xcf, 0x80, 0xc2, 0x84, 0x7a, 0x1b, 0xc4, 0xc6, 0x21, 0x94, 0x06, 0x2b, 0xba, 0xe5, 0xf8, 0xbe, 0xf3, 0x2c, 0xc1, 0xd2, 0xe5, 0xa0, 0xdb, 0xf5, 0x05, 0x28, 0x2e, 0xa8, 0xbb, 0xe1, 0xd9, 0x3c,
0x6a, 0x90, 0x8f, 0xba, 0x7e, 0xe9, 0x53, 0x98, 0x8f, 0x16, 0xe5, 0x13, 0xa8, 0xb6, 0x58, 0x37, 0x83, 0xca, 0xe4, 0x8e, 0x9e, 0x38, 0xbe, 0xff, 0x35, 0x28, 0xc4, 0x55, 0xbf, 0xd3, 0x29, 0xca,
0xba, 0x8a, 0xfa, 0xe1, 0x38, 0x7f, 0x92, 0xf1, 0xfe, 0x14, 0x60, 0x52, 0xb4, 0x69, 0x0d, 0xb7, 0x47, 0x8b, 0xf3, 0x09, 0xbb, 0xb6, 0xd9, 0x30, 0x6e, 0x45, 0xe3, 0x70, 0x92, 0x3e, 0xe9, 0xe4,
0x1c, 0xdf, 0xc1, 0x5e, 0x68, 0x3c, 0x85, 0xff, 0xaa, 0x28, 0x03, 0xd9, 0xfb, 0x92, 0xca, 0x4e, 0x77, 0xe0, 0xa5, 0x06, 0x9b, 0x51, 0x1e, 0x75, 0x2e, 0x9a, 0x7d, 0xda, 0xc2, 0x8f, 0xc4, 0xc7,
0x70, 0xa1, 0x4a, 0x30, 0x1d, 0x7c, 0xef, 0x5b, 0x8e, 0xcf, 0x34, 0x0c, 0x19, 0x0c, 0x66, 0x43, 0xd7, 0xd3, 0xf3, 0xeb, 0x1f, 0xb8, 0xc1, 0x44, 0x47, 0x47, 0xf3, 0x47, 0xf8, 0xac, 0x81, 0x32,
0x96, 0xf9, 0x9f, 0xd4, 0xc8, 0x63, 0xe4, 0x09, 0x64, 0x79, 0xb8, 0xe5, 0xa5, 0x75, 0xd9, 0xd5, 0x1c, 0x43, 0x53, 0x52, 0x39, 0x08, 0x17, 0xbc, 0x02, 0xcb, 0xe1, 0xfe, 0x1d, 0xb8, 0x01, 0xd3,
0x19, 0x33, 0xc2, 0x04, 0xed, 0xbe, 0xb4, 0x07, 0x47, 0x90, 0x8d, 0x66, 0x90, 0x69, 0x98, 0x3c, 0x28, 0x64, 0x32, 0x58, 0x8d, 0x8c, 0x30, 0x78, 0xc5, 0x67, 0x3e, 0x46, 0x7e, 0x80, 0x1c, 0x8f,
0x60, 0xef, 0x19, 0x3f, 0x65, 0xb9, 0x84, 0x17, 0xec, 0x21, 0x73, 0x1a, 0xac, 0x9e, 0xd3, 0xc8, 0x96, 0xbc, 0x1b, 0x65, 0x6e, 0x67, 0xc5, 0x8a, 0x31, 0x41, 0x67, 0x2c, 0xec, 0x9b, 0x73, 0xc8,
0x3c, 0xcc, 0xfa, 0xc1, 0xae, 0xbb, 0xc3, 0xe5, 0x26, 0xef, 0x30, 0x27, 0x37, 0x46, 0xfe, 0x81, 0xc5, 0x23, 0xc8, 0x32, 0x2c, 0x9e, 0xb2, 0xbf, 0x19, 0xbf, 0x62, 0xf9, 0x94, 0x7f, 0x38, 0x41,
0x74, 0x85, 0xb7, 0xda, 0x4d, 0x94, 0xe8, 0xe4, 0x92, 0x24, 0x0d, 0xe3, 0x1b, 0xae, 0xcb, 0xdd, 0xe6, 0x76, 0x58, 0x3b, 0xaf, 0x91, 0x75, 0x58, 0x0d, 0x0e, 0xc7, 0xe2, 0x88, 0xcb, 0x3a, 0x1f,
0x5c, 0x6a, 0xf5, 0x67, 0x12, 0xfe, 0xb5, 0x58, 0x97, 0x09, 0xff, 0xae, 0x59, 0xc7, 0xc2, 0xdb, 0x30, 0x37, 0x3f, 0x47, 0x3e, 0x81, 0x4c, 0x8d, 0xf7, 0xfa, 0x5d, 0x94, 0xe8, 0xe6, 0xd3, 0x24,
0xd3, 0x5e, 0x2f, 0xf2, 0x0c, 0x32, 0x61, 0x9f, 0x48, 0xd1, 0x1c, 0x68, 0x5b, 0x91, 0x98, 0xd7, 0x03, 0xf3, 0xfb, 0x42, 0x70, 0x91, 0xd7, 0x77, 0x5e, 0xe9, 0xf0, 0xa9, 0xcd, 0x86, 0xcc, 0x0b,
0x3c, 0x31, 0x12, 0x64, 0x0f, 0xe6, 0xe2, 0x96, 0x23, 0x31, 0xcc, 0x91, 0x3b, 0x73, 0x40, 0xc5, 0x76, 0xdf, 0xbe, 0xf0, 0xfc, 0xdf, 0x0d, 0xbf, 0x16, 0xf9, 0x09, 0xb2, 0x51, 0x9d, 0x48, 0xc9,
0x57, 0xb0, 0x10, 0xbf, 0x7b, 0xc8, 0x3d, 0xf3, 0x06, 0x4b, 0x69, 0x40, 0xd5, 0x35, 0xc8, 0x46, 0x9a, 0x28, 0x5b, 0x89, 0x58, 0x0f, 0x34, 0x31, 0x53, 0xe4, 0x04, 0xd6, 0x92, 0xcc, 0x9a, 0x98,
0x57, 0x0e, 0x59, 0x30, 0x63, 0x77, 0x50, 0x31, 0x63, 0x86, 0x40, 0x23, 0x41, 0xb6, 0x21, 0x1f, 0xd6, 0x4c, 0x0f, 0x9f, 0x90, 0xf1, 0x37, 0xd8, 0x48, 0xf6, 0x42, 0xf2, 0x95, 0xf5, 0x08, 0x93,
0xb3, 0x69, 0xc8, 0x9c, 0x19, 0x73, 0x05, 0x8a, 0x4b, 0xe6, 0x90, 0xad, 0x64, 0x24, 0xc8, 0x0e, 0x9c, 0x90, 0x75, 0x17, 0x72, 0x71, 0x0b, 0x24, 0x1b, 0x56, 0xa2, 0x27, 0x96, 0xb2, 0x56, 0x04,
0xe4, 0x63, 0xae, 0x25, 0x59, 0x36, 0x47, 0x5d, 0xd6, 0x78, 0x59, 0xcf, 0x1f, 0x7f, 0x3f, 0xd7, 0x34, 0x53, 0xe4, 0x10, 0x0a, 0x09, 0xce, 0x47, 0xd6, 0xac, 0x84, 0x95, 0x2c, 0x95, 0xad, 0x29,
0xb5, 0xb3, 0x73, 0x5d, 0xfb, 0x75, 0xae, 0x6b, 0x9f, 0x2f, 0xf4, 0xc4, 0xd9, 0x85, 0x9e, 0xf8, 0x2e, 0x69, 0xa6, 0xc8, 0x79, 0xa2, 0x8d, 0x8e, 0x16, 0x89, 0x94, 0xad, 0x29, 0xfb, 0x35, 0x33,
0x71, 0xa1, 0x27, 0x0e, 0x97, 0x86, 0xfd, 0xfc, 0x38, 0x9e, 0x50, 0xff, 0x1e, 0xfd, 0x0e, 0x00, 0xf9, 0x11, 0x14, 0x12, 0x3c, 0x88, 0x6c, 0x59, 0xb3, 0x9c, 0x29, 0x59, 0xb3, 0x9f, 0xbf, 0x7f,
0x00, 0xff, 0xff, 0xb6, 0xa8, 0xb9, 0x6c, 0xa5, 0x08, 0x00, 0x00, 0x7d, 0x63, 0x68, 0xd7, 0x37, 0x86, 0xf6, 0xf6, 0xc6, 0xd0, 0x9e, 0xdd, 0x1a, 0xa9, 0xeb, 0x5b,
0x23, 0xf5, 0xe6, 0xd6, 0x48, 0x9d, 0x95, 0xa7, 0xfd, 0xd7, 0xba, 0x58, 0x50, 0x5f, 0xdf, 0xbd,
0x0b, 0x00, 0x00, 0xff, 0xff, 0xb1, 0xf4, 0xc0, 0x1d, 0x92, 0x09, 0x00, 0x00,
} }
func (m *UserAccount) Marshal() (dAtA []byte, err error) { func (m *UserAccount) Marshal() (dAtA []byte, err error) {
@ -1236,6 +1303,50 @@ func (m *NameRegisterRequest) MarshalTo(dAtA []byte) (int, error) {
} }
func (m *NameRegisterRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { func (m *NameRegisterRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if len(m.OwnerEthAddress) > 0 {
i -= len(m.OwnerEthAddress)
copy(dAtA[i:], m.OwnerEthAddress)
i = encodeVarintNameserviceAa(dAtA, i, uint64(len(m.OwnerEthAddress)))
i--
dAtA[i] = 0x1a
}
if len(m.OwnerAnyAddress) > 0 {
i -= len(m.OwnerAnyAddress)
copy(dAtA[i:], m.OwnerAnyAddress)
i = encodeVarintNameserviceAa(dAtA, i, uint64(len(m.OwnerAnyAddress)))
i--
dAtA[i] = 0x12
}
if len(m.FullName) > 0 {
i -= len(m.FullName)
copy(dAtA[i:], m.FullName)
i = encodeVarintNameserviceAa(dAtA, i, uint64(len(m.FullName)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *NameRegisterForSpaceRequest) 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 *NameRegisterForSpaceRequest) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *NameRegisterForSpaceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA) i := len(dAtA)
_ = i _ = i
var l int var l int
@ -1524,6 +1635,27 @@ func (m *CreateUserOperationRequestSigned) Size() (n int) {
} }
func (m *NameRegisterRequest) Size() (n int) { func (m *NameRegisterRequest) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.FullName)
if l > 0 {
n += 1 + l + sovNameserviceAa(uint64(l))
}
l = len(m.OwnerAnyAddress)
if l > 0 {
n += 1 + l + sovNameserviceAa(uint64(l))
}
l = len(m.OwnerEthAddress)
if l > 0 {
n += 1 + l + sovNameserviceAa(uint64(l))
}
return n
}
func (m *NameRegisterForSpaceRequest) Size() (n int) {
if m == nil { if m == nil {
return 0 return 0
} }
@ -2820,6 +2952,152 @@ func (m *NameRegisterRequest) Unmarshal(dAtA []byte) error {
return fmt.Errorf("proto: NameRegisterRequest: illegal tag %d (wire type %d)", fieldNum, wire) return fmt.Errorf("proto: NameRegisterRequest: illegal tag %d (wire type %d)", fieldNum, wire)
} }
switch fieldNum { switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field FullName", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowNameserviceAa
}
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 ErrInvalidLengthNameserviceAa
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthNameserviceAa
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.FullName = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field OwnerAnyAddress", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowNameserviceAa
}
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 ErrInvalidLengthNameserviceAa
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthNameserviceAa
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.OwnerAnyAddress = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field OwnerEthAddress", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowNameserviceAa
}
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 ErrInvalidLengthNameserviceAa
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthNameserviceAa
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.OwnerEthAddress = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipNameserviceAa(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthNameserviceAa
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *NameRegisterForSpaceRequest) 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 ErrIntOverflowNameserviceAa
}
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: NameRegisterForSpaceRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: NameRegisterForSpaceRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1: case 1:
if wireType != 2 { if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field FullName", wireType) return fmt.Errorf("proto: wrong wireType = %d for field FullName", wireType)

View file

@ -45,6 +45,7 @@ type DRPCAnynsAccountAbstractionClient interface {
AdminFundGasOperations(ctx context.Context, in *AdminFundGasOperationsRequestSigned) (*OperationResponse, error) AdminFundGasOperations(ctx context.Context, in *AdminFundGasOperationsRequestSigned) (*OperationResponse, error)
GetUserAccount(ctx context.Context, in *GetUserAccountRequest) (*UserAccount, error) GetUserAccount(ctx context.Context, in *GetUserAccountRequest) (*UserAccount, error)
GetDataNameRegister(ctx context.Context, in *NameRegisterRequest) (*GetDataNameRegisterResponse, error) GetDataNameRegister(ctx context.Context, in *NameRegisterRequest) (*GetDataNameRegisterResponse, error)
GetDataNameRegisterForSpace(ctx context.Context, in *NameRegisterForSpaceRequest) (*GetDataNameRegisterResponse, error)
CreateUserOperation(ctx context.Context, in *CreateUserOperationRequestSigned) (*OperationResponse, error) CreateUserOperation(ctx context.Context, in *CreateUserOperationRequestSigned) (*OperationResponse, error)
} }
@ -103,6 +104,15 @@ func (c *drpcAnynsAccountAbstractionClient) GetDataNameRegister(ctx context.Cont
return out, nil return out, nil
} }
func (c *drpcAnynsAccountAbstractionClient) GetDataNameRegisterForSpace(ctx context.Context, in *NameRegisterForSpaceRequest) (*GetDataNameRegisterResponse, error) {
out := new(GetDataNameRegisterResponse)
err := c.cc.Invoke(ctx, "/AnynsAccountAbstraction/GetDataNameRegisterForSpace", drpcEncoding_File_nameservice_nameserviceproto_protos_nameservice_aa_proto{}, in, out)
if err != nil {
return nil, err
}
return out, nil
}
func (c *drpcAnynsAccountAbstractionClient) CreateUserOperation(ctx context.Context, in *CreateUserOperationRequestSigned) (*OperationResponse, error) { func (c *drpcAnynsAccountAbstractionClient) CreateUserOperation(ctx context.Context, in *CreateUserOperationRequestSigned) (*OperationResponse, error) {
out := new(OperationResponse) out := new(OperationResponse)
err := c.cc.Invoke(ctx, "/AnynsAccountAbstraction/CreateUserOperation", drpcEncoding_File_nameservice_nameserviceproto_protos_nameservice_aa_proto{}, in, out) err := c.cc.Invoke(ctx, "/AnynsAccountAbstraction/CreateUserOperation", drpcEncoding_File_nameservice_nameserviceproto_protos_nameservice_aa_proto{}, in, out)
@ -118,6 +128,7 @@ type DRPCAnynsAccountAbstractionServer interface {
AdminFundGasOperations(context.Context, *AdminFundGasOperationsRequestSigned) (*OperationResponse, error) AdminFundGasOperations(context.Context, *AdminFundGasOperationsRequestSigned) (*OperationResponse, error)
GetUserAccount(context.Context, *GetUserAccountRequest) (*UserAccount, error) GetUserAccount(context.Context, *GetUserAccountRequest) (*UserAccount, error)
GetDataNameRegister(context.Context, *NameRegisterRequest) (*GetDataNameRegisterResponse, error) GetDataNameRegister(context.Context, *NameRegisterRequest) (*GetDataNameRegisterResponse, error)
GetDataNameRegisterForSpace(context.Context, *NameRegisterForSpaceRequest) (*GetDataNameRegisterResponse, error)
CreateUserOperation(context.Context, *CreateUserOperationRequestSigned) (*OperationResponse, error) CreateUserOperation(context.Context, *CreateUserOperationRequestSigned) (*OperationResponse, error)
} }
@ -143,13 +154,17 @@ func (s *DRPCAnynsAccountAbstractionUnimplementedServer) GetDataNameRegister(con
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
} }
func (s *DRPCAnynsAccountAbstractionUnimplementedServer) GetDataNameRegisterForSpace(context.Context, *NameRegisterForSpaceRequest) (*GetDataNameRegisterResponse, error) {
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
}
func (s *DRPCAnynsAccountAbstractionUnimplementedServer) CreateUserOperation(context.Context, *CreateUserOperationRequestSigned) (*OperationResponse, error) { func (s *DRPCAnynsAccountAbstractionUnimplementedServer) CreateUserOperation(context.Context, *CreateUserOperationRequestSigned) (*OperationResponse, error) {
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
} }
type DRPCAnynsAccountAbstractionDescription struct{} type DRPCAnynsAccountAbstractionDescription struct{}
func (DRPCAnynsAccountAbstractionDescription) NumMethods() int { return 6 } func (DRPCAnynsAccountAbstractionDescription) NumMethods() int { return 7 }
func (DRPCAnynsAccountAbstractionDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) { func (DRPCAnynsAccountAbstractionDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
switch n { switch n {
@ -199,6 +214,15 @@ func (DRPCAnynsAccountAbstractionDescription) Method(n int) (string, drpc.Encodi
) )
}, DRPCAnynsAccountAbstractionServer.GetDataNameRegister, true }, DRPCAnynsAccountAbstractionServer.GetDataNameRegister, true
case 5: case 5:
return "/AnynsAccountAbstraction/GetDataNameRegisterForSpace", drpcEncoding_File_nameservice_nameserviceproto_protos_nameservice_aa_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return srv.(DRPCAnynsAccountAbstractionServer).
GetDataNameRegisterForSpace(
ctx,
in1.(*NameRegisterForSpaceRequest),
)
}, DRPCAnynsAccountAbstractionServer.GetDataNameRegisterForSpace, true
case 6:
return "/AnynsAccountAbstraction/CreateUserOperation", drpcEncoding_File_nameservice_nameserviceproto_protos_nameservice_aa_proto{}, return "/AnynsAccountAbstraction/CreateUserOperation", drpcEncoding_File_nameservice_nameserviceproto_protos_nameservice_aa_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return srv.(DRPCAnynsAccountAbstractionServer). return srv.(DRPCAnynsAccountAbstractionServer).
@ -296,6 +320,22 @@ func (x *drpcAnynsAccountAbstraction_GetDataNameRegisterStream) SendAndClose(m *
return x.CloseSend() return x.CloseSend()
} }
type DRPCAnynsAccountAbstraction_GetDataNameRegisterForSpaceStream interface {
drpc.Stream
SendAndClose(*GetDataNameRegisterResponse) error
}
type drpcAnynsAccountAbstraction_GetDataNameRegisterForSpaceStream struct {
drpc.Stream
}
func (x *drpcAnynsAccountAbstraction_GetDataNameRegisterForSpaceStream) SendAndClose(m *GetDataNameRegisterResponse) error {
if err := x.MsgSend(m, drpcEncoding_File_nameservice_nameserviceproto_protos_nameservice_aa_proto{}); err != nil {
return err
}
return x.CloseSend()
}
type DRPCAnynsAccountAbstraction_CreateUserOperationStream interface { type DRPCAnynsAccountAbstraction_CreateUserOperationStream interface {
drpc.Stream drpc.Stream
SendAndClose(*OperationResponse) error SendAndClose(*OperationResponse) error

View file

@ -22,7 +22,6 @@ message NameAvailableResponse {
string ownerScwEthAddress = 2; string ownerScwEthAddress = 2;
// This field is non-empty only if name is "already registered" // This field is non-empty only if name is "already registered"
// TODO:
string ownerEthAddress = 3; string ownerEthAddress = 3;
// A content hash attached to this name // A content hash attached to this name

View file

@ -98,6 +98,26 @@ message NameRegisterRequest {
string fullName = 1; string fullName = 1;
// A content hash attached to this name // A content hash attached to this name
// This should not be empty!
string ownerAnyAddress = 2;
// An Ethereum address that owns that name
string ownerEthAddress = 3;
// Example:
// 1 - register alice.any -> ANYID123123
// 2 - register xxxx.any -> ANYID123123
// reverse resolve ANYID123123 will return xxxx.any
//
// TODO: currently by default "true"
// bool updateReverseResolver = 4;
}
message NameRegisterForSpaceRequest {
string fullName = 1;
// A content hash attached to this name
// This should not be empty!
string ownerAnyAddress = 2; string ownerAnyAddress = 2;
// An Ethereum address that owns that name // An Ethereum address that owns that name
@ -153,7 +173,12 @@ service AnynsAccountAbstraction {
// 2. sign it with your Ethereum private key // 2. sign it with your Ethereum private key
// 3. send it using CreateUserOperation // 3. send it using CreateUserOperation
// 4. check operation status using GetOperation // 4. check operation status using GetOperation
//
// Register new name for my Any identity
rpc GetDataNameRegister(NameRegisterRequest) returns (GetDataNameRegisterResponse) {} rpc GetDataNameRegister(NameRegisterRequest) returns (GetDataNameRegisterResponse) {}
// Register new name and attach Space ID to it
rpc GetDataNameRegisterForSpace(NameRegisterForSpaceRequest) returns (GetDataNameRegisterResponse) {}
// TODO // TODO
//rpc GetDataNameUpdate(NameUpdateRequest) returns (GetDataNameRegisterResponse) {} //rpc GetDataNameUpdate(NameUpdateRequest) returns (GetDataNameRegisterResponse) {}

View file

@ -55,6 +55,21 @@ func (mr *MockAnyPpClientServiceMockRecorder) BuySubscription(ctx, in any) *gomo
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BuySubscription", reflect.TypeOf((*MockAnyPpClientService)(nil).BuySubscription), ctx, in) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BuySubscription", reflect.TypeOf((*MockAnyPpClientService)(nil).BuySubscription), ctx, in)
} }
// GetSubscriptionPortalLink mocks base method.
func (m *MockAnyPpClientService) GetSubscriptionPortalLink(ctx context.Context, in *paymentserviceproto.GetSubscriptionPortalLinkRequestSigned) (*paymentserviceproto.GetSubscriptionPortalLinkResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetSubscriptionPortalLink", ctx, in)
ret0, _ := ret[0].(*paymentserviceproto.GetSubscriptionPortalLinkResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetSubscriptionPortalLink indicates an expected call of GetSubscriptionPortalLink.
func (mr *MockAnyPpClientServiceMockRecorder) GetSubscriptionPortalLink(ctx, in any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubscriptionPortalLink", reflect.TypeOf((*MockAnyPpClientService)(nil).GetSubscriptionPortalLink), ctx, in)
}
// GetSubscriptionStatus mocks base method. // GetSubscriptionStatus mocks base method.
func (m *MockAnyPpClientService) GetSubscriptionStatus(ctx context.Context, in *paymentserviceproto.GetSubscriptionRequestSigned) (*paymentserviceproto.GetSubscriptionResponse, error) { func (m *MockAnyPpClientService) GetSubscriptionStatus(ctx context.Context, in *paymentserviceproto.GetSubscriptionRequestSigned) (*paymentserviceproto.GetSubscriptionResponse, error) {
m.ctrl.T.Helper() m.ctrl.T.Helper()

View file

@ -20,6 +20,7 @@ const CName = "any-pp.drpcclient"
type AnyPpClientService interface { type AnyPpClientService interface {
GetSubscriptionStatus(ctx context.Context, in *pp.GetSubscriptionRequestSigned) (out *pp.GetSubscriptionResponse, err error) GetSubscriptionStatus(ctx context.Context, in *pp.GetSubscriptionRequestSigned) (out *pp.GetSubscriptionResponse, err error)
BuySubscription(ctx context.Context, in *pp.BuySubscriptionRequestSigned) (out *pp.BuySubscriptionResponse, err error) BuySubscription(ctx context.Context, in *pp.BuySubscriptionRequestSigned) (out *pp.BuySubscriptionResponse, err error)
GetSubscriptionPortalLink(ctx context.Context, in *pp.GetSubscriptionPortalLinkRequestSigned) (out *pp.GetSubscriptionPortalLinkResponse, err error)
app.Component app.Component
} }
@ -80,3 +81,13 @@ func (s *service) BuySubscription(ctx context.Context, in *pp.BuySubscriptionReq
}) })
return return
} }
func (s *service) GetSubscriptionPortalLink(ctx context.Context, in *pp.GetSubscriptionPortalLinkRequestSigned) (out *pp.GetSubscriptionPortalLinkResponse, err error) {
err = s.doClient(ctx, func(cl pp.DRPCAnyPaymentProcessingClient) error {
if out, err = cl.GetSubscriptionPortalLink(ctx, in); err != nil {
return rpcerr.Unwrap(err)
}
return nil
})
return
}

View file

@ -25,24 +25,34 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type SubscriptionTier int32 type SubscriptionTier int32
const ( const (
SubscriptionTier_TierUnknown SubscriptionTier = 0 SubscriptionTier_TierUnknown SubscriptionTier = 0
SubscriptionTier_TierFriend SubscriptionTier = 1 // "free" tier
SubscriptionTier_TierSupporter1Year SubscriptionTier = 2 SubscriptionTier_TierFriend SubscriptionTier = 1
SubscriptionTier_TierPatron1Year SubscriptionTier = 3 // these can be used just for testing in debug mode
// it will still create an active subscription, but with NO features
SubscriptionTier_TierSupporter1WeekTEST SubscriptionTier = 2
SubscriptionTier_TierPatron1WeekTEST SubscriptionTier = 3
// these are the real tiers:
SubscriptionTier_TierSupporter1Year SubscriptionTier = 4
SubscriptionTier_TierPatron1Year SubscriptionTier = 5
) )
var SubscriptionTier_name = map[int32]string{ var SubscriptionTier_name = map[int32]string{
0: "TierUnknown", 0: "TierUnknown",
1: "TierFriend", 1: "TierFriend",
2: "TierSupporter1Year", 2: "TierSupporter1WeekTEST",
3: "TierPatron1Year", 3: "TierPatron1WeekTEST",
4: "TierSupporter1Year",
5: "TierPatron1Year",
} }
var SubscriptionTier_value = map[string]int32{ var SubscriptionTier_value = map[string]int32{
"TierUnknown": 0, "TierUnknown": 0,
"TierFriend": 1, "TierFriend": 1,
"TierSupporter1Year": 2, "TierSupporter1WeekTEST": 2,
"TierPatron1Year": 3, "TierPatron1WeekTEST": 3,
"TierSupporter1Year": 4,
"TierPatron1Year": 5,
} }
func (x SubscriptionTier) String() string { func (x SubscriptionTier) String() string {
@ -680,52 +690,53 @@ func init() {
} }
var fileDescriptor_4feb29dcc5ba50f6 = []byte{ var fileDescriptor_4feb29dcc5ba50f6 = []byte{
// 707 bytes of a gzipped FileDescriptorProto // 733 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x95, 0x5f, 0x4f, 0xd3, 0x5e, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x95, 0xcd, 0x6e, 0xd3, 0x4e,
0x18, 0xc7, 0xdb, 0x6d, 0xc0, 0xf6, 0xc0, 0xb6, 0x72, 0xf8, 0xfd, 0xa0, 0x2e, 0xa3, 0x99, 0x4d, 0x10, 0xc0, 0xed, 0x24, 0x6d, 0x93, 0x69, 0x93, 0xb8, 0xdb, 0xff, 0x3f, 0x35, 0x51, 0x6a, 0x05,
0xd4, 0x65, 0xc6, 0x12, 0xd1, 0x44, 0x4d, 0x8c, 0x49, 0x51, 0x24, 0x26, 0x68, 0x96, 0x4e, 0x48, 0x4b, 0x40, 0x14, 0x84, 0x2b, 0x0a, 0x12, 0x20, 0x21, 0x24, 0x17, 0x4a, 0x85, 0x54, 0x50, 0xe4,
0xe4, 0x8a, 0xb2, 0x9e, 0x8c, 0xca, 0x38, 0xa7, 0x9e, 0x73, 0x0a, 0xf6, 0xd6, 0x57, 0xe0, 0x8b, 0xb4, 0x45, 0xf4, 0x84, 0x1b, 0x8f, 0x52, 0xd3, 0x74, 0x6d, 0xd6, 0x9b, 0x16, 0x5f, 0x79, 0x02,
0xf0, 0xc5, 0x78, 0xc9, 0xa5, 0x97, 0x06, 0x5e, 0x87, 0x89, 0xe9, 0x69, 0xd9, 0x5f, 0xc6, 0x88, 0x2e, 0xbc, 0x01, 0x0f, 0xc3, 0xb1, 0x47, 0x8e, 0xa8, 0x7d, 0x0e, 0x24, 0xe4, 0xb5, 0x9b, 0xcf,
0xdc, 0xac, 0x7d, 0x3e, 0xe7, 0x39, 0xcf, 0x9f, 0xf3, 0x7c, 0x7b, 0x06, 0xaf, 0x02, 0x37, 0x3a, 0xa6, 0xa9, 0xe8, 0x25, 0xde, 0xf9, 0xcd, 0xc7, 0xce, 0xec, 0xcc, 0x6e, 0xe0, 0x85, 0x6f, 0x87,
0xc6, 0x44, 0x70, 0xcc, 0x4e, 0xfc, 0x36, 0x5e, 0x1b, 0x36, 0x03, 0x46, 0x05, 0x5d, 0x93, 0xbf, 0x47, 0x48, 0x79, 0x80, 0xec, 0xd8, 0x6d, 0xe1, 0xea, 0xb0, 0xe8, 0x33, 0x8f, 0x7b, 0xab, 0xe2,
0x7c, 0x64, 0xc9, 0x92, 0xd4, 0x7c, 0x0e, 0xcb, 0x5b, 0x58, 0xb4, 0xc2, 0x03, 0xde, 0x66, 0x7e, 0x37, 0x18, 0x51, 0x19, 0x82, 0xea, 0x4f, 0xa1, 0xb4, 0x89, 0xbc, 0xd9, 0xdd, 0x0f, 0x5a, 0xcc,
0x20, 0x7c, 0x4a, 0x1c, 0xfc, 0x25, 0xc4, 0x5c, 0x20, 0x03, 0x80, 0x9e, 0x12, 0xcc, 0x6c, 0x12, 0xf5, 0xb9, 0xeb, 0x51, 0x0b, 0x3f, 0x77, 0x31, 0xe0, 0x44, 0x03, 0xf0, 0x4e, 0x28, 0x32, 0x93,
0xbd, 0x7b, 0xa3, 0xab, 0x35, 0xb5, 0x5e, 0x70, 0x06, 0x88, 0xb9, 0x0b, 0xd5, 0xab, 0x77, 0xb6, 0x86, 0x6f, 0x5e, 0xa9, 0x72, 0x55, 0xae, 0xe5, 0xac, 0x01, 0xa2, 0xef, 0x42, 0xe5, 0x72, 0xcf,
0xfc, 0x0e, 0xc1, 0x1e, 0xd2, 0x61, 0x2e, 0x70, 0xa3, 0x2e, 0x75, 0x3d, 0xb9, 0x79, 0xc1, 0xb9, 0xa6, 0xdb, 0xa6, 0xe8, 0x10, 0x15, 0xe6, 0x7c, 0x3b, 0xec, 0x78, 0xb6, 0x23, 0x9c, 0x17, 0xac,
0x34, 0x51, 0x15, 0x0a, 0xdc, 0xef, 0x10, 0x57, 0x84, 0x0c, 0xeb, 0x19, 0xb9, 0xd6, 0x07, 0xe6, 0x0b, 0x91, 0x54, 0x20, 0x17, 0xb8, 0x6d, 0x6a, 0xf3, 0x2e, 0x43, 0x35, 0x25, 0x74, 0x7d, 0xa0,
0xb7, 0x2c, 0xac, 0x8c, 0x05, 0xe6, 0x01, 0x25, 0x1c, 0xa3, 0x7b, 0x90, 0x13, 0x3e, 0x66, 0x32, 0x7f, 0x4d, 0xc3, 0xf2, 0x58, 0xe0, 0xc0, 0xf7, 0x68, 0x80, 0xe4, 0x0e, 0x64, 0xb8, 0x8b, 0x4c,
0x60, 0x69, 0x7d, 0xd1, 0x1a, 0x74, 0xfa, 0xe8, 0x63, 0xe6, 0xc8, 0x65, 0xf4, 0x10, 0x66, 0xb9, 0x04, 0x2c, 0xac, 0x2d, 0x1a, 0x83, 0x46, 0xdb, 0x2e, 0x32, 0x4b, 0xa8, 0xc9, 0x7d, 0x98, 0x0d,
0x70, 0x45, 0xc8, 0x65, 0xf4, 0xd2, 0xfa, 0xd2, 0x90, 0x63, 0x4b, 0x2e, 0x39, 0xa9, 0x0b, 0xaa, 0xb8, 0xcd, 0xbb, 0x81, 0x88, 0x5e, 0x58, 0x5b, 0x1a, 0x32, 0x6c, 0x0a, 0x95, 0x95, 0x98, 0x90,
0xc1, 0xbc, 0xe7, 0x0a, 0xdc, 0x12, 0x2e, 0x13, 0xd8, 0xd3, 0xb3, 0x35, 0xb5, 0x9e, 0x73, 0x06, 0x2a, 0xcc, 0x3b, 0x36, 0xc7, 0x26, 0xb7, 0x19, 0x47, 0x47, 0x4d, 0x57, 0xe5, 0x5a, 0xc6, 0x1a,
0x11, 0xaa, 0x40, 0x3e, 0x36, 0x37, 0x89, 0xc7, 0xf5, 0x9c, 0x5c, 0xee, 0xd9, 0xf1, 0x6e, 0x9f, 0x44, 0xa4, 0x0c, 0xd9, 0x48, 0xdc, 0xa0, 0x4e, 0xa0, 0x66, 0x84, 0xba, 0x27, 0x47, 0xde, 0x6e,
0xdb, 0xa1, 0xa0, 0x0e, 0x26, 0xf8, 0x54, 0x9f, 0xa9, 0xa9, 0xf5, 0xbc, 0x33, 0x88, 0xd0, 0x23, 0x60, 0x76, 0xb9, 0x67, 0x21, 0xc5, 0x13, 0x75, 0xa6, 0x2a, 0xd7, 0xb2, 0xd6, 0x20, 0x22, 0x0f,
0xc8, 0x13, 0xfc, 0x55, 0xc4, 0xe5, 0xe9, 0xb3, 0x93, 0xea, 0xee, 0xb9, 0x20, 0x13, 0x16, 0x2e, 0x20, 0x4b, 0xf1, 0x0b, 0x8f, 0xd2, 0x53, 0x67, 0x27, 0xe5, 0xdd, 0x33, 0x21, 0x3a, 0x2c, 0x5c,
0xdf, 0x65, 0xc2, 0x39, 0x99, 0x70, 0x88, 0xa1, 0xa7, 0x50, 0x4c, 0x87, 0xf9, 0x1e, 0x8b, 0x43, 0xac, 0xc5, 0x86, 0x73, 0x62, 0xc3, 0x21, 0x46, 0x1e, 0x43, 0x3e, 0x69, 0xe6, 0x5b, 0xe4, 0x07,
0xea, 0xe9, 0x79, 0x19, 0xb7, 0x64, 0x35, 0x07, 0xa9, 0x33, 0xec, 0x84, 0x1a, 0xa0, 0xb1, 0x64, 0x9e, 0xa3, 0x66, 0x45, 0xdc, 0x82, 0xd1, 0x18, 0xa4, 0xd6, 0xb0, 0x11, 0xa9, 0x83, 0xc2, 0xe2,
0x42, 0xd8, 0xb3, 0x49, 0xf4, 0xc1, 0x3d, 0xc6, 0x7a, 0x41, 0x8e, 0x75, 0x8c, 0x9b, 0x7f, 0x54, 0x0e, 0xa1, 0x63, 0xd2, 0xf0, 0x9d, 0x7d, 0x84, 0x6a, 0x4e, 0xb4, 0x75, 0x8c, 0xeb, 0x7f, 0x64,
0x58, 0xde, 0x08, 0xa3, 0x69, 0xba, 0xf0, 0xc6, 0x74, 0xe1, 0xa1, 0x3a, 0x94, 0xa5, 0xb5, 0x29, 0x28, 0xad, 0x77, 0xc3, 0x69, 0x73, 0xe1, 0x8c, 0xcd, 0x85, 0x43, 0x6a, 0x50, 0x14, 0xd2, 0x06,
0x0e, 0x6d, 0xcf, 0x63, 0x98, 0x27, 0x53, 0x28, 0x38, 0xa3, 0x18, 0x3d, 0x83, 0x62, 0x2f, 0xb1, 0x3f, 0x30, 0x1d, 0x87, 0x61, 0x10, 0x77, 0x21, 0x67, 0x8d, 0x62, 0xf2, 0x04, 0xf2, 0xbd, 0x8d,
0x3c, 0x9e, 0xec, 0xa4, 0xe3, 0x19, 0xf6, 0x1b, 0xef, 0x3f, 0xf7, 0xaf, 0xfd, 0xcf, 0x4c, 0xe8, 0xc5, 0xf1, 0xa4, 0x27, 0x1d, 0xcf, 0xb0, 0xdd, 0x78, 0xfd, 0x99, 0x7f, 0xad, 0x7f, 0x66, 0x42,
0x7f, 0x17, 0xaa, 0x57, 0xb7, 0x7f, 0x4b, 0x71, 0xbf, 0x80, 0x95, 0xb1, 0xb8, 0xa9, 0xb6, 0x0d, 0xfd, 0xbb, 0x50, 0xb9, 0xbc, 0xfc, 0x1b, 0x0e, 0xf7, 0x33, 0x58, 0x1e, 0x8b, 0x9b, 0xcc, 0xb6,
0x80, 0xb4, 0xde, 0x1d, 0xd6, 0xbd, 0x3c, 0xd7, 0x3e, 0x31, 0x37, 0xa0, 0x36, 0xf2, 0x59, 0x34, 0x06, 0x90, 0xe4, 0xbb, 0xc3, 0x3a, 0x17, 0xe7, 0xda, 0x27, 0xfa, 0x3a, 0x54, 0x47, 0xae, 0x45,
0x29, 0x13, 0x6e, 0x77, 0xdb, 0x27, 0x47, 0x37, 0x9c, 0x8d, 0xb9, 0x0f, 0xf7, 0xa7, 0xc5, 0xb8, 0xc3, 0x63, 0xdc, 0xee, 0x6c, 0xb9, 0xf4, 0xf0, 0x9a, 0xbd, 0xd1, 0x3f, 0xc2, 0xdd, 0x69, 0x31,
0x65, 0x83, 0x36, 0xdc, 0xbd, 0x26, 0x43, 0xda, 0x6a, 0x15, 0x0a, 0x81, 0xa4, 0xfd, 0x4e, 0xfb, 0x6e, 0x58, 0xa0, 0x09, 0xb7, 0xaf, 0xd8, 0x21, 0x29, 0xb5, 0x02, 0x39, 0x5f, 0xd0, 0x7e, 0xa5,
0xa0, 0xb1, 0x0f, 0xda, 0xa8, 0x00, 0x50, 0x19, 0xe6, 0xe3, 0xe7, 0x0e, 0x39, 0x22, 0xf4, 0x94, 0x7d, 0x50, 0xff, 0x2e, 0x83, 0x32, 0x3a, 0x01, 0xa4, 0x08, 0xf3, 0xd1, 0x77, 0x87, 0x1e, 0x52,
0x68, 0x0a, 0x2a, 0x01, 0xc4, 0xe0, 0x2d, 0xf3, 0x31, 0xf1, 0x34, 0x15, 0x2d, 0x03, 0x8a, 0xed, 0xef, 0x84, 0x2a, 0x12, 0x29, 0x00, 0x44, 0xe0, 0x35, 0x73, 0x91, 0x3a, 0x8a, 0x4c, 0xca, 0x50,
0x56, 0x18, 0xc4, 0x81, 0x30, 0x7b, 0xfc, 0x09, 0xbb, 0x4c, 0xcb, 0xa0, 0x25, 0x28, 0xc7, 0xbc, 0x8a, 0xe4, 0x66, 0xd7, 0x8f, 0x22, 0x21, 0x7b, 0xf8, 0x1e, 0xf1, 0x70, 0x7b, 0xa3, 0xb9, 0xad,
0xe9, 0x0a, 0x46, 0x49, 0x02, 0xb3, 0x8d, 0x6d, 0x40, 0xe3, 0x17, 0x02, 0x5a, 0x84, 0x62, 0xf2, 0xa4, 0xc8, 0x32, 0x2c, 0x45, 0xba, 0x86, 0xcd, 0x99, 0x47, 0xfb, 0x8a, 0x34, 0x29, 0x01, 0x19,
0xd6, 0xcf, 0xd2, 0x43, 0x4d, 0x4c, 0x3c, 0x9f, 0x74, 0x34, 0x15, 0x69, 0xb0, 0x90, 0x20, 0xbb, 0x76, 0xfa, 0x80, 0x36, 0x53, 0x32, 0x64, 0x09, 0x8a, 0x03, 0x0e, 0x02, 0xce, 0xd4, 0xb7, 0x80,
0x2d, 0xfc, 0x13, 0xac, 0x65, 0x1a, 0x7b, 0x50, 0x1c, 0xd2, 0x5d, 0x5c, 0x5b, 0xf2, 0xf6, 0xda, 0x8c, 0x3f, 0x23, 0x64, 0x11, 0xf2, 0xf1, 0xaa, 0x9f, 0x5a, 0x0f, 0x35, 0x90, 0x3a, 0x2e, 0x6d,
0x65, 0x9e, 0xa6, 0xc4, 0x5b, 0x52, 0x9b, 0x45, 0x81, 0xa0, 0x9a, 0x8a, 0x10, 0x94, 0x12, 0x62, 0x2b, 0x32, 0x51, 0x60, 0x21, 0x46, 0x66, 0x8b, 0xbb, 0xc7, 0xa8, 0xa4, 0xea, 0x7b, 0x90, 0x1f,
0x07, 0x41, 0x17, 0x37, 0xdd, 0x28, 0xa9, 0x34, 0x61, 0x5b, 0x94, 0x76, 0x12, 0x98, 0x5d, 0xff, 0x9a, 0xd6, 0xa8, 0xa0, 0x78, 0xf5, 0xd2, 0x66, 0x8e, 0x22, 0x45, 0x2e, 0x89, 0xcc, 0x42, 0x9f,
0x91, 0x81, 0xff, 0x6c, 0x12, 0xa5, 0xf1, 0x9b, 0x8c, 0xb6, 0x31, 0xe7, 0x3e, 0xe9, 0x20, 0x07, 0x7b, 0x8a, 0x4c, 0x08, 0x14, 0x62, 0x62, 0xfa, 0x7e, 0x07, 0x1b, 0x76, 0xa8, 0xa4, 0xa2, 0x4c,
0xfe, 0x1f, 0x39, 0xe7, 0xb4, 0x8b, 0x55, 0xeb, 0xba, 0x5b, 0xb9, 0xa2, 0x5b, 0x13, 0xee, 0x56, 0x63, 0xb6, 0xe9, 0x79, 0xed, 0x18, 0xa6, 0xd7, 0x7e, 0xa4, 0xe0, 0x3f, 0x93, 0x86, 0x49, 0xfc,
0x53, 0x41, 0xdb, 0x50, 0x1e, 0x11, 0x27, 0x5a, 0xb5, 0xae, 0xfb, 0x0c, 0x2a, 0xba, 0x35, 0x41, 0x06, 0xf3, 0x5a, 0x18, 0x04, 0x2e, 0x6d, 0x13, 0x0b, 0xfe, 0x1f, 0xe9, 0x4e, 0x52, 0xc5, 0x8a,
0xcd, 0xa6, 0x82, 0x3e, 0xc3, 0x9d, 0x89, 0x4a, 0x40, 0x0f, 0xac, 0x9b, 0xe9, 0xb0, 0x62, 0x5a, 0x71, 0xd5, 0x5b, 0x5e, 0x56, 0x8d, 0x09, 0x2f, 0xb2, 0x2e, 0x91, 0x2d, 0x28, 0x8e, 0x8c, 0x34,
0x53, 0xe5, 0x64, 0x2a, 0x1b, 0x2f, 0x7f, 0x9e, 0x1b, 0xea, 0xd9, 0xb9, 0xa1, 0xfe, 0x3e, 0x37, 0x59, 0x31, 0xae, 0xba, 0x3c, 0x65, 0xd5, 0x98, 0x70, 0x07, 0x74, 0x89, 0x7c, 0x82, 0x5b, 0x13,
0xd4, 0xef, 0x17, 0x86, 0x72, 0x76, 0x61, 0x28, 0xbf, 0x2e, 0x0c, 0x65, 0xcf, 0x9c, 0xfe, 0xff, 0xe7, 0x87, 0xdc, 0x33, 0xae, 0x37, 0xbd, 0x65, 0xdd, 0x98, 0x3a, 0x84, 0xba, 0xb4, 0xfe, 0xfc,
0x78, 0x30, 0x2b, 0x1f, 0x4f, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, 0x5d, 0xde, 0x71, 0x1b, 0x4c, 0xe7, 0x99, 0x26, 0x9f, 0x9e, 0x69, 0xf2, 0xef, 0x33, 0x4d, 0xfe, 0x76, 0xae, 0x49, 0xa7, 0xe7,
0x07, 0x00, 0x00, 0x9a, 0xf4, 0xeb, 0x5c, 0x93, 0xf6, 0xf4, 0xe9, 0xff, 0xaa, 0xfb, 0xb3, 0xe2, 0xf3, 0xe8, 0x6f,
0x00, 0x00, 0x00, 0xff, 0xff, 0x22, 0x5f, 0xac, 0xd7, 0x82, 0x07, 0x00, 0x00,
} }
func (m *GetSubscriptionRequest) Marshal() (dAtA []byte, err error) { func (m *GetSubscriptionRequest) Marshal() (dAtA []byte, err error) {

View file

@ -7,9 +7,17 @@ option go_package = "paymentservice/paymentserviceproto";
enum SubscriptionTier { enum SubscriptionTier {
TierUnknown = 0; TierUnknown = 0;
// "free" tier
TierFriend = 1; TierFriend = 1;
TierSupporter1Year = 2;
TierPatron1Year = 3; // these can be used just for testing in debug mode
// it will still create an active subscription, but with NO features
TierSupporter1WeekTEST = 2;
TierPatron1WeekTEST = 3;
// these are the real tiers:
TierSupporter1Year = 4;
TierPatron1Year = 5;
} }
enum SubscriptionStatus { enum SubscriptionStatus {
@ -129,15 +137,14 @@ service AnyPaymentProcessing {
// You can: // You can:
// a) buy a subscription // a) buy a subscription
// b) TODO: upgrade your tier // b) TODO: upgrade your tier
// c) TODO: renew subscription
// //
// you can call BuySubscription multiple times even if current payment is not processed yet // you can call BuySubscription multiple times even if current payment is not processed yet
// (to get new payment link) // (to get new payment link)
rpc BuySubscription(BuySubscriptionRequestSigned) returns (BuySubscriptionResponse) {} rpc BuySubscription(BuySubscriptionRequestSigned) returns (BuySubscriptionResponse) {}
// Will generate a link to the portal where user can: // Will generate a link to the portal where user can:
// a) change his billing details // a) change her billing details
// b) see payment info, invoices, etc // b) see payment info, invoices, etc
// c) cancel the subscription // c) cancel/renew the subscription
rpc GetSubscriptionPortalLink(GetSubscriptionPortalLinkRequestSigned) returns (GetSubscriptionPortalLinkResponse) {} rpc GetSubscriptionPortalLink(GetSubscriptionPortalLinkRequestSigned) returns (GetSubscriptionPortalLinkResponse) {}
} }