From a5e7c8953bfa549bbf048da976e532d7ffe4dfe8 Mon Sep 17 00:00:00 2001 From: Xeronith Date: Mon, 19 Jun 2023 11:32:56 +0330 Subject: [PATCH] feat(api): :sparkles: improve verification --- app/commands/resend_verification_code.go | 32 + components/api/operations/factory.go | 1 + .../resend_verification_code_operation.go | 39 + components/api/protobuf/spis.pb.go | 915 ++++++++++-------- components/api/protobuf/spis.proto | 10 + .../resend_verification_code_service.go | 23 + components/constants/errors.go | 2 + components/constants/resources.en-US.go | 1 + components/contracts/api.go | 1 + components/contracts/opcodes.go | 6 + components/contracts/spi.go | 5 + components/contracts/system_component.go | 2 + components/contracts/system_dispatcher.go | 3 + components/core/api_methods.go | 11 + components/core/initializer.go | 8 + components/core/spi.go | 4 + components/core/spi_manager.go | 43 + components/core/system_results.go | 4 + 18 files changed, 717 insertions(+), 393 deletions(-) create mode 100644 app/commands/resend_verification_code.go create mode 100644 components/api/operations/resend_verification_code_operation.go create mode 100644 components/api/services/resend_verification_code_service.go diff --git a/app/commands/resend_verification_code.go b/app/commands/resend_verification_code.go new file mode 100644 index 0000000..eb5f448 --- /dev/null +++ b/app/commands/resend_verification_code.go @@ -0,0 +1,32 @@ +package commands + +import ( + . "github.com/reiver/greatape/components/constants" + . "github.com/reiver/greatape/components/contracts" +) + +func ResendVerificationCode(x IDispatcher, email string) (IResendVerificationCodeResult, error) { + identities := x.FilterIdentities(func(identity IIdentity) bool { + return identity.Email() == email + }) + + x.Assert(identities.HasExactlyOneItem()).Or(ERROR_INVALID_EMAIL_FOR_RESEND_VERIFICATION_CODE) + identity := identities.First() + code := identity.Token() + + if len(code) >= 10 { + return nil, ERROR_USERNAME_OR_EMAIL_ALREADY_REGISTERED + } + + if x.IsStagingEnvironment() || x.IsProductionEnvironment() { + x.Email(email, "resend-verification-code", + map[string]interface{}{ + "app": "GreatApe", + "code": code, + }) + + code = "000000" + } + + return x.NewResendVerificationCodeResult(code), nil +} diff --git a/components/api/operations/factory.go b/components/api/operations/factory.go index 2f1c4c1..8b5400c 100644 --- a/components/api/operations/factory.go +++ b/components/api/operations/factory.go @@ -10,6 +10,7 @@ func (factory *operationFactory) Operations() []IOperation { EchoOperation(), CheckUsernameAvailabilityOperation(), SignupOperation(), + ResendVerificationCodeOperation(), VerifyOperation(), LoginOperation(), GetProfileByUserOperation(), diff --git a/components/api/operations/resend_verification_code_operation.go b/components/api/operations/resend_verification_code_operation.go new file mode 100644 index 0000000..5a7f428 --- /dev/null +++ b/components/api/operations/resend_verification_code_operation.go @@ -0,0 +1,39 @@ +package operations + +import ( + . "github.com/reiver/greatape/components/api/protobuf" + . "github.com/reiver/greatape/components/api/services" + . "github.com/reiver/greatape/components/contracts" + . "github.com/xeronith/diamante/contracts/operation" + . "github.com/xeronith/diamante/contracts/service" + . "github.com/xeronith/diamante/contracts/system" + . "github.com/xeronith/diamante/operation" +) + +type resendVerificationCodeOperation struct { + Operation + + run func(IContext, *ResendVerificationCodeRequest) (*ResendVerificationCodeResult, error) +} + +func ResendVerificationCodeOperation() IOperation { + return &resendVerificationCodeOperation{ + run: ResendVerificationCodeService, + } +} + +func (operation *resendVerificationCodeOperation) Id() (ID, ID) { + return RESEND_VERIFICATION_CODE_REQUEST, RESEND_VERIFICATION_CODE_RESULT +} + +func (operation *resendVerificationCodeOperation) InputContainer() Pointer { + return new(ResendVerificationCodeRequest) +} + +func (operation *resendVerificationCodeOperation) OutputContainer() Pointer { + return new(ResendVerificationCodeResult) +} + +func (operation *resendVerificationCodeOperation) Execute(context IContext, payload Pointer) (Pointer, error) { + return operation.run(context, payload.(*ResendVerificationCodeRequest)) +} diff --git a/components/api/protobuf/spis.pb.go b/components/api/protobuf/spis.pb.go index 079f6b6..57db033 100644 --- a/components/api/protobuf/spis.pb.go +++ b/components/api/protobuf/spis.pb.go @@ -419,6 +419,102 @@ func (x *SignupResult) GetCode() string { return "" } +// API: ResendVerificationCode +// ----------------------------------------------------------- +type ResendVerificationCodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` +} + +func (x *ResendVerificationCodeRequest) Reset() { + *x = ResendVerificationCodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_spis_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResendVerificationCodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResendVerificationCodeRequest) ProtoMessage() {} + +func (x *ResendVerificationCodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_spis_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResendVerificationCodeRequest.ProtoReflect.Descriptor instead. +func (*ResendVerificationCodeRequest) Descriptor() ([]byte, []int) { + return file_spis_proto_rawDescGZIP(), []int{8} +} + +func (x *ResendVerificationCodeRequest) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +type ResendVerificationCodeResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` +} + +func (x *ResendVerificationCodeResult) Reset() { + *x = ResendVerificationCodeResult{} + if protoimpl.UnsafeEnabled { + mi := &file_spis_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResendVerificationCodeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResendVerificationCodeResult) ProtoMessage() {} + +func (x *ResendVerificationCodeResult) ProtoReflect() protoreflect.Message { + mi := &file_spis_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResendVerificationCodeResult.ProtoReflect.Descriptor instead. +func (*ResendVerificationCodeResult) Descriptor() ([]byte, []int) { + return file_spis_proto_rawDescGZIP(), []int{9} +} + +func (x *ResendVerificationCodeResult) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + // API: Verify // ----------------------------------------------------------- type VerifyRequest struct { @@ -434,7 +530,7 @@ type VerifyRequest struct { func (x *VerifyRequest) Reset() { *x = VerifyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[8] + mi := &file_spis_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -447,7 +543,7 @@ func (x *VerifyRequest) String() string { func (*VerifyRequest) ProtoMessage() {} func (x *VerifyRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[8] + mi := &file_spis_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -460,7 +556,7 @@ func (x *VerifyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyRequest.ProtoReflect.Descriptor instead. func (*VerifyRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{8} + return file_spis_proto_rawDescGZIP(), []int{10} } func (x *VerifyRequest) GetEmail() string { @@ -495,7 +591,7 @@ type VerifyResult struct { func (x *VerifyResult) Reset() { *x = VerifyResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[9] + mi := &file_spis_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -508,7 +604,7 @@ func (x *VerifyResult) String() string { func (*VerifyResult) ProtoMessage() {} func (x *VerifyResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[9] + mi := &file_spis_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -521,7 +617,7 @@ func (x *VerifyResult) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyResult.ProtoReflect.Descriptor instead. func (*VerifyResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{9} + return file_spis_proto_rawDescGZIP(), []int{11} } func (x *VerifyResult) GetToken() string { @@ -545,7 +641,7 @@ type LoginRequest struct { func (x *LoginRequest) Reset() { *x = LoginRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[10] + mi := &file_spis_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -558,7 +654,7 @@ func (x *LoginRequest) String() string { func (*LoginRequest) ProtoMessage() {} func (x *LoginRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[10] + mi := &file_spis_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -571,7 +667,7 @@ func (x *LoginRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LoginRequest.ProtoReflect.Descriptor instead. func (*LoginRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{10} + return file_spis_proto_rawDescGZIP(), []int{12} } func (x *LoginRequest) GetEmail() string { @@ -600,7 +696,7 @@ type LoginResult struct { func (x *LoginResult) Reset() { *x = LoginResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[11] + mi := &file_spis_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -613,7 +709,7 @@ func (x *LoginResult) String() string { func (*LoginResult) ProtoMessage() {} func (x *LoginResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[11] + mi := &file_spis_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -626,7 +722,7 @@ func (x *LoginResult) ProtoReflect() protoreflect.Message { // Deprecated: Use LoginResult.ProtoReflect.Descriptor instead. func (*LoginResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{11} + return file_spis_proto_rawDescGZIP(), []int{13} } func (x *LoginResult) GetUsername() string { @@ -654,7 +750,7 @@ type GetProfileByUserRequest struct { func (x *GetProfileByUserRequest) Reset() { *x = GetProfileByUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[12] + mi := &file_spis_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -667,7 +763,7 @@ func (x *GetProfileByUserRequest) String() string { func (*GetProfileByUserRequest) ProtoMessage() {} func (x *GetProfileByUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[12] + mi := &file_spis_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -680,7 +776,7 @@ func (x *GetProfileByUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileByUserRequest.ProtoReflect.Descriptor instead. func (*GetProfileByUserRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{12} + return file_spis_proto_rawDescGZIP(), []int{14} } type GetProfileByUserResult struct { @@ -699,7 +795,7 @@ type GetProfileByUserResult struct { func (x *GetProfileByUserResult) Reset() { *x = GetProfileByUserResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[13] + mi := &file_spis_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -712,7 +808,7 @@ func (x *GetProfileByUserResult) String() string { func (*GetProfileByUserResult) ProtoMessage() {} func (x *GetProfileByUserResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[13] + mi := &file_spis_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -725,7 +821,7 @@ func (x *GetProfileByUserResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileByUserResult.ProtoReflect.Descriptor instead. func (*GetProfileByUserResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{13} + return file_spis_proto_rawDescGZIP(), []int{15} } func (x *GetProfileByUserResult) GetUsername() string { @@ -787,7 +883,7 @@ type UpdateProfileByUserRequest struct { func (x *UpdateProfileByUserRequest) Reset() { *x = UpdateProfileByUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[14] + mi := &file_spis_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -800,7 +896,7 @@ func (x *UpdateProfileByUserRequest) String() string { func (*UpdateProfileByUserRequest) ProtoMessage() {} func (x *UpdateProfileByUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[14] + mi := &file_spis_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -813,7 +909,7 @@ func (x *UpdateProfileByUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProfileByUserRequest.ProtoReflect.Descriptor instead. func (*UpdateProfileByUserRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{14} + return file_spis_proto_rawDescGZIP(), []int{16} } func (x *UpdateProfileByUserRequest) GetDisplayName() string { @@ -866,7 +962,7 @@ type UpdateProfileByUserResult struct { func (x *UpdateProfileByUserResult) Reset() { *x = UpdateProfileByUserResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[15] + mi := &file_spis_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -879,7 +975,7 @@ func (x *UpdateProfileByUserResult) String() string { func (*UpdateProfileByUserResult) ProtoMessage() {} func (x *UpdateProfileByUserResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[15] + mi := &file_spis_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -892,7 +988,7 @@ func (x *UpdateProfileByUserResult) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProfileByUserResult.ProtoReflect.Descriptor instead. func (*UpdateProfileByUserResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{15} + return file_spis_proto_rawDescGZIP(), []int{17} } func (x *UpdateProfileByUserResult) GetDisplayName() string { @@ -944,7 +1040,7 @@ type ChangePasswordRequest struct { func (x *ChangePasswordRequest) Reset() { *x = ChangePasswordRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[16] + mi := &file_spis_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -957,7 +1053,7 @@ func (x *ChangePasswordRequest) String() string { func (*ChangePasswordRequest) ProtoMessage() {} func (x *ChangePasswordRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[16] + mi := &file_spis_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -970,7 +1066,7 @@ func (x *ChangePasswordRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangePasswordRequest.ProtoReflect.Descriptor instead. func (*ChangePasswordRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{16} + return file_spis_proto_rawDescGZIP(), []int{18} } func (x *ChangePasswordRequest) GetCurrentPassword() string { @@ -996,7 +1092,7 @@ type ChangePasswordResult struct { func (x *ChangePasswordResult) Reset() { *x = ChangePasswordResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[17] + mi := &file_spis_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1009,7 +1105,7 @@ func (x *ChangePasswordResult) String() string { func (*ChangePasswordResult) ProtoMessage() {} func (x *ChangePasswordResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[17] + mi := &file_spis_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1022,7 +1118,7 @@ func (x *ChangePasswordResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangePasswordResult.ProtoReflect.Descriptor instead. func (*ChangePasswordResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{17} + return file_spis_proto_rawDescGZIP(), []int{19} } // API: ResetPassword @@ -1038,7 +1134,7 @@ type ResetPasswordRequest struct { func (x *ResetPasswordRequest) Reset() { *x = ResetPasswordRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[18] + mi := &file_spis_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1051,7 +1147,7 @@ func (x *ResetPasswordRequest) String() string { func (*ResetPasswordRequest) ProtoMessage() {} func (x *ResetPasswordRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[18] + mi := &file_spis_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1064,7 +1160,7 @@ func (x *ResetPasswordRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetPasswordRequest.ProtoReflect.Descriptor instead. func (*ResetPasswordRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{18} + return file_spis_proto_rawDescGZIP(), []int{20} } func (x *ResetPasswordRequest) GetUsernameOrEmail() string { @@ -1083,7 +1179,7 @@ type ResetPasswordResult struct { func (x *ResetPasswordResult) Reset() { *x = ResetPasswordResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[19] + mi := &file_spis_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1096,7 +1192,7 @@ func (x *ResetPasswordResult) String() string { func (*ResetPasswordResult) ProtoMessage() {} func (x *ResetPasswordResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[19] + mi := &file_spis_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1109,7 +1205,7 @@ func (x *ResetPasswordResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetPasswordResult.ProtoReflect.Descriptor instead. func (*ResetPasswordResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{19} + return file_spis_proto_rawDescGZIP(), []int{21} } // API: Logout @@ -1123,7 +1219,7 @@ type LogoutRequest struct { func (x *LogoutRequest) Reset() { *x = LogoutRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[20] + mi := &file_spis_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1136,7 +1232,7 @@ func (x *LogoutRequest) String() string { func (*LogoutRequest) ProtoMessage() {} func (x *LogoutRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[20] + mi := &file_spis_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1149,7 +1245,7 @@ func (x *LogoutRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LogoutRequest.ProtoReflect.Descriptor instead. func (*LogoutRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{20} + return file_spis_proto_rawDescGZIP(), []int{22} } type LogoutResult struct { @@ -1161,7 +1257,7 @@ type LogoutResult struct { func (x *LogoutResult) Reset() { *x = LogoutResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[21] + mi := &file_spis_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1174,7 +1270,7 @@ func (x *LogoutResult) String() string { func (*LogoutResult) ProtoMessage() {} func (x *LogoutResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[21] + mi := &file_spis_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1187,7 +1283,7 @@ func (x *LogoutResult) ProtoReflect() protoreflect.Message { // Deprecated: Use LogoutResult.ProtoReflect.Descriptor instead. func (*LogoutResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{21} + return file_spis_proto_rawDescGZIP(), []int{23} } // API: Webfinger @@ -1203,7 +1299,7 @@ type WebfingerRequest struct { func (x *WebfingerRequest) Reset() { *x = WebfingerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[22] + mi := &file_spis_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1216,7 +1312,7 @@ func (x *WebfingerRequest) String() string { func (*WebfingerRequest) ProtoMessage() {} func (x *WebfingerRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[22] + mi := &file_spis_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1229,7 +1325,7 @@ func (x *WebfingerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WebfingerRequest.ProtoReflect.Descriptor instead. func (*WebfingerRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{22} + return file_spis_proto_rawDescGZIP(), []int{24} } func (x *WebfingerRequest) GetResource() string { @@ -1252,7 +1348,7 @@ type WebfingerResult struct { func (x *WebfingerResult) Reset() { *x = WebfingerResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[23] + mi := &file_spis_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1265,7 +1361,7 @@ func (x *WebfingerResult) String() string { func (*WebfingerResult) ProtoMessage() {} func (x *WebfingerResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[23] + mi := &file_spis_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1278,7 +1374,7 @@ func (x *WebfingerResult) ProtoReflect() protoreflect.Message { // Deprecated: Use WebfingerResult.ProtoReflect.Descriptor instead. func (*WebfingerResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{23} + return file_spis_proto_rawDescGZIP(), []int{25} } func (x *WebfingerResult) GetAliases() []string { @@ -1313,7 +1409,7 @@ type GetPackagesRequest struct { func (x *GetPackagesRequest) Reset() { *x = GetPackagesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[24] + mi := &file_spis_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1326,7 +1422,7 @@ func (x *GetPackagesRequest) String() string { func (*GetPackagesRequest) ProtoMessage() {} func (x *GetPackagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[24] + mi := &file_spis_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1339,7 +1435,7 @@ func (x *GetPackagesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPackagesRequest.ProtoReflect.Descriptor instead. func (*GetPackagesRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{24} + return file_spis_proto_rawDescGZIP(), []int{26} } type GetPackagesResult struct { @@ -1353,7 +1449,7 @@ type GetPackagesResult struct { func (x *GetPackagesResult) Reset() { *x = GetPackagesResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[25] + mi := &file_spis_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1366,7 +1462,7 @@ func (x *GetPackagesResult) String() string { func (*GetPackagesResult) ProtoMessage() {} func (x *GetPackagesResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[25] + mi := &file_spis_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1379,7 +1475,7 @@ func (x *GetPackagesResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPackagesResult.ProtoReflect.Descriptor instead. func (*GetPackagesResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{25} + return file_spis_proto_rawDescGZIP(), []int{27} } func (x *GetPackagesResult) GetBody() []byte { @@ -1402,7 +1498,7 @@ type GetActorRequest struct { func (x *GetActorRequest) Reset() { *x = GetActorRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[26] + mi := &file_spis_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1415,7 +1511,7 @@ func (x *GetActorRequest) String() string { func (*GetActorRequest) ProtoMessage() {} func (x *GetActorRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[26] + mi := &file_spis_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1428,7 +1524,7 @@ func (x *GetActorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetActorRequest.ProtoReflect.Descriptor instead. func (*GetActorRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{26} + return file_spis_proto_rawDescGZIP(), []int{28} } func (x *GetActorRequest) GetUsername() string { @@ -1463,7 +1559,7 @@ type GetActorResult struct { func (x *GetActorResult) Reset() { *x = GetActorResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[27] + mi := &file_spis_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1476,7 +1572,7 @@ func (x *GetActorResult) String() string { func (*GetActorResult) ProtoMessage() {} func (x *GetActorResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[27] + mi := &file_spis_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1489,7 +1585,7 @@ func (x *GetActorResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetActorResult.ProtoReflect.Descriptor instead. func (*GetActorResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{27} + return file_spis_proto_rawDescGZIP(), []int{29} } func (x *GetActorResult) GetContext() []string { @@ -1611,7 +1707,7 @@ type FollowActorRequest struct { func (x *FollowActorRequest) Reset() { *x = FollowActorRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[28] + mi := &file_spis_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1624,7 +1720,7 @@ func (x *FollowActorRequest) String() string { func (*FollowActorRequest) ProtoMessage() {} func (x *FollowActorRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[28] + mi := &file_spis_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1637,7 +1733,7 @@ func (x *FollowActorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FollowActorRequest.ProtoReflect.Descriptor instead. func (*FollowActorRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{28} + return file_spis_proto_rawDescGZIP(), []int{30} } func (x *FollowActorRequest) GetUsername() string { @@ -1665,7 +1761,7 @@ type FollowActorResult struct { func (x *FollowActorResult) Reset() { *x = FollowActorResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[29] + mi := &file_spis_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1678,7 +1774,7 @@ func (x *FollowActorResult) String() string { func (*FollowActorResult) ProtoMessage() {} func (x *FollowActorResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[29] + mi := &file_spis_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1691,7 +1787,7 @@ func (x *FollowActorResult) ProtoReflect() protoreflect.Message { // Deprecated: Use FollowActorResult.ProtoReflect.Descriptor instead. func (*FollowActorResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{29} + return file_spis_proto_rawDescGZIP(), []int{31} } func (x *FollowActorResult) GetUrl() string { @@ -1714,7 +1810,7 @@ type AuthorizeInteractionRequest struct { func (x *AuthorizeInteractionRequest) Reset() { *x = AuthorizeInteractionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[30] + mi := &file_spis_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1727,7 +1823,7 @@ func (x *AuthorizeInteractionRequest) String() string { func (*AuthorizeInteractionRequest) ProtoMessage() {} func (x *AuthorizeInteractionRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[30] + mi := &file_spis_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1740,7 +1836,7 @@ func (x *AuthorizeInteractionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizeInteractionRequest.ProtoReflect.Descriptor instead. func (*AuthorizeInteractionRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{30} + return file_spis_proto_rawDescGZIP(), []int{32} } func (x *AuthorizeInteractionRequest) GetUri() string { @@ -1762,7 +1858,7 @@ type AuthorizeInteractionResult struct { func (x *AuthorizeInteractionResult) Reset() { *x = AuthorizeInteractionResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[31] + mi := &file_spis_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1775,7 +1871,7 @@ func (x *AuthorizeInteractionResult) String() string { func (*AuthorizeInteractionResult) ProtoMessage() {} func (x *AuthorizeInteractionResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[31] + mi := &file_spis_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1788,7 +1884,7 @@ func (x *AuthorizeInteractionResult) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizeInteractionResult.ProtoReflect.Descriptor instead. func (*AuthorizeInteractionResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{31} + return file_spis_proto_rawDescGZIP(), []int{33} } func (x *AuthorizeInteractionResult) GetUri() string { @@ -1818,7 +1914,7 @@ type GetFollowersRequest struct { func (x *GetFollowersRequest) Reset() { *x = GetFollowersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[32] + mi := &file_spis_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1831,7 +1927,7 @@ func (x *GetFollowersRequest) String() string { func (*GetFollowersRequest) ProtoMessage() {} func (x *GetFollowersRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[32] + mi := &file_spis_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1844,7 +1940,7 @@ func (x *GetFollowersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFollowersRequest.ProtoReflect.Descriptor instead. func (*GetFollowersRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{32} + return file_spis_proto_rawDescGZIP(), []int{34} } func (x *GetFollowersRequest) GetUsername() string { @@ -1870,7 +1966,7 @@ type GetFollowersResult struct { func (x *GetFollowersResult) Reset() { *x = GetFollowersResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[33] + mi := &file_spis_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1883,7 +1979,7 @@ func (x *GetFollowersResult) String() string { func (*GetFollowersResult) ProtoMessage() {} func (x *GetFollowersResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[33] + mi := &file_spis_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1896,7 +1992,7 @@ func (x *GetFollowersResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFollowersResult.ProtoReflect.Descriptor instead. func (*GetFollowersResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{33} + return file_spis_proto_rawDescGZIP(), []int{35} } func (x *GetFollowersResult) GetContext() string { @@ -1954,7 +2050,7 @@ type GetFollowingRequest struct { func (x *GetFollowingRequest) Reset() { *x = GetFollowingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[34] + mi := &file_spis_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1967,7 +2063,7 @@ func (x *GetFollowingRequest) String() string { func (*GetFollowingRequest) ProtoMessage() {} func (x *GetFollowingRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[34] + mi := &file_spis_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1980,7 +2076,7 @@ func (x *GetFollowingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFollowingRequest.ProtoReflect.Descriptor instead. func (*GetFollowingRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{34} + return file_spis_proto_rawDescGZIP(), []int{36} } func (x *GetFollowingRequest) GetUsername() string { @@ -2006,7 +2102,7 @@ type GetFollowingResult struct { func (x *GetFollowingResult) Reset() { *x = GetFollowingResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[35] + mi := &file_spis_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2019,7 +2115,7 @@ func (x *GetFollowingResult) String() string { func (*GetFollowingResult) ProtoMessage() {} func (x *GetFollowingResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[35] + mi := &file_spis_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2032,7 +2128,7 @@ func (x *GetFollowingResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFollowingResult.ProtoReflect.Descriptor instead. func (*GetFollowingResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{35} + return file_spis_proto_rawDescGZIP(), []int{37} } func (x *GetFollowingResult) GetContext() string { @@ -2091,7 +2187,7 @@ type PostToOutboxRequest struct { func (x *PostToOutboxRequest) Reset() { *x = PostToOutboxRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[36] + mi := &file_spis_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2104,7 +2200,7 @@ func (x *PostToOutboxRequest) String() string { func (*PostToOutboxRequest) ProtoMessage() {} func (x *PostToOutboxRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[36] + mi := &file_spis_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2117,7 +2213,7 @@ func (x *PostToOutboxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PostToOutboxRequest.ProtoReflect.Descriptor instead. func (*PostToOutboxRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{36} + return file_spis_proto_rawDescGZIP(), []int{38} } func (x *PostToOutboxRequest) GetUsername() string { @@ -2145,7 +2241,7 @@ type PostToOutboxResult struct { func (x *PostToOutboxResult) Reset() { *x = PostToOutboxResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[37] + mi := &file_spis_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2158,7 +2254,7 @@ func (x *PostToOutboxResult) String() string { func (*PostToOutboxResult) ProtoMessage() {} func (x *PostToOutboxResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[37] + mi := &file_spis_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2171,7 +2267,7 @@ func (x *PostToOutboxResult) ProtoReflect() protoreflect.Message { // Deprecated: Use PostToOutboxResult.ProtoReflect.Descriptor instead. func (*PostToOutboxResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{37} + return file_spis_proto_rawDescGZIP(), []int{39} } func (x *PostToOutboxResult) GetBody() []byte { @@ -2194,7 +2290,7 @@ type GetOutboxRequest struct { func (x *GetOutboxRequest) Reset() { *x = GetOutboxRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[38] + mi := &file_spis_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2207,7 +2303,7 @@ func (x *GetOutboxRequest) String() string { func (*GetOutboxRequest) ProtoMessage() {} func (x *GetOutboxRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[38] + mi := &file_spis_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2220,7 +2316,7 @@ func (x *GetOutboxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOutboxRequest.ProtoReflect.Descriptor instead. func (*GetOutboxRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{38} + return file_spis_proto_rawDescGZIP(), []int{40} } func (x *GetOutboxRequest) GetUsername() string { @@ -2246,7 +2342,7 @@ type GetOutboxResult struct { func (x *GetOutboxResult) Reset() { *x = GetOutboxResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[39] + mi := &file_spis_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2259,7 +2355,7 @@ func (x *GetOutboxResult) String() string { func (*GetOutboxResult) ProtoMessage() {} func (x *GetOutboxResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[39] + mi := &file_spis_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2272,7 +2368,7 @@ func (x *GetOutboxResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOutboxResult.ProtoReflect.Descriptor instead. func (*GetOutboxResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{39} + return file_spis_proto_rawDescGZIP(), []int{41} } func (x *GetOutboxResult) GetContext() string { @@ -2331,7 +2427,7 @@ type PostToInboxRequest struct { func (x *PostToInboxRequest) Reset() { *x = PostToInboxRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[40] + mi := &file_spis_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2344,7 +2440,7 @@ func (x *PostToInboxRequest) String() string { func (*PostToInboxRequest) ProtoMessage() {} func (x *PostToInboxRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[40] + mi := &file_spis_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2357,7 +2453,7 @@ func (x *PostToInboxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PostToInboxRequest.ProtoReflect.Descriptor instead. func (*PostToInboxRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{40} + return file_spis_proto_rawDescGZIP(), []int{42} } func (x *PostToInboxRequest) GetUsername() string { @@ -2385,7 +2481,7 @@ type PostToInboxResult struct { func (x *PostToInboxResult) Reset() { *x = PostToInboxResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[41] + mi := &file_spis_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2398,7 +2494,7 @@ func (x *PostToInboxResult) String() string { func (*PostToInboxResult) ProtoMessage() {} func (x *PostToInboxResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[41] + mi := &file_spis_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2411,7 +2507,7 @@ func (x *PostToInboxResult) ProtoReflect() protoreflect.Message { // Deprecated: Use PostToInboxResult.ProtoReflect.Descriptor instead. func (*PostToInboxResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{41} + return file_spis_proto_rawDescGZIP(), []int{43} } func (x *PostToInboxResult) GetBody() []byte { @@ -2434,7 +2530,7 @@ type GetInboxRequest struct { func (x *GetInboxRequest) Reset() { *x = GetInboxRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[42] + mi := &file_spis_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2447,7 +2543,7 @@ func (x *GetInboxRequest) String() string { func (*GetInboxRequest) ProtoMessage() {} func (x *GetInboxRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[42] + mi := &file_spis_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2460,7 +2556,7 @@ func (x *GetInboxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInboxRequest.ProtoReflect.Descriptor instead. func (*GetInboxRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{42} + return file_spis_proto_rawDescGZIP(), []int{44} } func (x *GetInboxRequest) GetUsername() string { @@ -2486,7 +2582,7 @@ type GetInboxResult struct { func (x *GetInboxResult) Reset() { *x = GetInboxResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[43] + mi := &file_spis_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2499,7 +2595,7 @@ func (x *GetInboxResult) String() string { func (*GetInboxResult) ProtoMessage() {} func (x *GetInboxResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[43] + mi := &file_spis_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2512,7 +2608,7 @@ func (x *GetInboxResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInboxResult.ProtoReflect.Descriptor instead. func (*GetInboxResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{43} + return file_spis_proto_rawDescGZIP(), []int{45} } func (x *GetInboxResult) GetContext() string { @@ -2592,208 +2688,215 @@ var file_spis_proto_rawDesc = []byte{ 0x6e, 0x75, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, - 0x6f, 0x64, 0x65, 0x22, 0x4f, 0x0a, 0x0d, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, + 0x6f, 0x64, 0x65, 0x22, 0x35, 0x0a, 0x1d, 0x52, 0x65, 0x73, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x22, 0x24, 0x0a, 0x0c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x40, 0x0a, 0x0c, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x3f, 0x0a, 0x0b, - 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x19, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb8, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x6e, - 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, - 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x22, 0xa0, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, - 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x16, - 0x0a, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x22, 0x9f, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, - 0x0a, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, - 0x12, 0x16, 0x0a, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x22, 0x63, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e, - 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x16, 0x0a, - 0x14, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x40, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, - 0x0f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x4f, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x4f, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x65, 0x74, - 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x0f, - 0x0a, 0x0d, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x0e, 0x0a, 0x0c, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x2e, 0x0a, 0x10, 0x57, 0x65, 0x62, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, - 0x76, 0x0a, 0x0f, 0x57, 0x65, 0x62, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x05, - 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, - 0x75, 0x62, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x18, 0x0a, - 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x27, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x2d, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe5, 0x03, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x6f, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x19, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x40, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, - 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x12, - 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x62, 0x6f, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x69, 0x6e, 0x62, 0x6f, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x78, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x78, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x55, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x75, 0x62, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, - 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x75, 0x62, 0x4d, 0x65, 0x64, 0x69, 0x61, - 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x4b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x75, - 0x62, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, - 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x22, 0x44, 0x0a, - 0x12, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x61, 0x63, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, - 0x63, 0x63, 0x74, 0x22, 0x25, 0x0a, 0x11, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, - 0x6f, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x2f, 0x0a, 0x1b, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x22, 0x48, 0x0a, 0x1a, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x18, 0x0a, 0x07, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x31, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6c, 0x6c, - 0x6f, 0x77, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, - 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x19, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x40, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x22, - 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x22, 0x31, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, - 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x12, - 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x19, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x40, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, - 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, - 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x22, 0x45, 0x0a, 0x13, 0x50, - 0x6f, 0x73, 0x74, 0x54, 0x6f, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, - 0x64, 0x79, 0x22, 0x28, 0x0a, 0x12, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x6f, 0x4f, 0x75, 0x74, 0x62, - 0x6f, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x2e, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc9, 0x01, 0x0a, - 0x0f, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x19, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x40, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, - 0x41, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x75, 0x62, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x22, 0x44, 0x0a, 0x12, 0x50, 0x6f, 0x73, 0x74, - 0x54, 0x6f, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x32, 0x0a, 0x1c, 0x52, 0x65, + 0x73, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x4f, + 0x0a, 0x0d, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, + 0x24, 0x0a, 0x0c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x40, 0x0a, 0x0c, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x3f, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0xb8, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, - 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x27, - 0x0a, 0x11, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x6f, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x2d, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x62, 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x62, 0x6f, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x19, 0x0a, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x40, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, + 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x22, 0xa0, + 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x22, 0x9f, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x22, 0x63, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, + 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x40, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x4f, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x4f, 0x72, 0x45, 0x6d, 0x61, + 0x69, 0x6c, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x0f, 0x0a, 0x0d, 0x4c, 0x6f, 0x67, + 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x0e, 0x0a, 0x0c, 0x4c, 0x6f, + 0x67, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2e, 0x0a, 0x10, 0x57, 0x65, + 0x62, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x76, 0x0a, 0x0f, 0x57, 0x65, + 0x62, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x75, 0x62, 0x4c, 0x69, 0x6e, + 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x27, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x22, 0x2d, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0xe5, 0x03, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x19, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x40, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, + 0x0a, 0x09, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, + 0x62, 0x6f, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x62, 0x6f, 0x78, + 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, + 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, + 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, + 0x12, 0x2e, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x50, 0x75, 0x62, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, - 0x69, 0x72, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x72, 0x73, - 0x74, 0x42, 0x04, 0x5a, 0x02, 0x2e, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x79, 0x50, 0x75, 0x62, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, + 0x12, 0x30, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x50, 0x75, 0x62, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x05, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x75, 0x62, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x22, 0x44, 0x0a, 0x12, 0x46, 0x6f, 0x6c, 0x6c, + 0x6f, 0x77, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x63, + 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x63, 0x63, 0x74, 0x22, 0x25, + 0x0a, 0x11, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x2f, 0x0a, 0x1b, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x22, 0x48, 0x0a, 0x1a, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x22, 0x31, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x19, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x40, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, + 0x72, 0x73, 0x74, 0x22, 0x31, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x6f, + 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x19, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x40, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x22, 0x0a, 0x0c, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x22, 0x45, 0x0a, 0x13, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x6f, + 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x28, 0x0a, + 0x12, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x6f, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x2e, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x75, + 0x74, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4f, + 0x75, 0x74, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x19, 0x0a, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x40, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x0c, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x50, 0x75, 0x62, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, + 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, + 0x72, 0x73, 0x74, 0x22, 0x44, 0x0a, 0x12, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x6f, 0x49, 0x6e, 0x62, + 0x6f, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x27, 0x0a, 0x11, 0x50, 0x6f, 0x73, + 0x74, 0x54, 0x6f, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, + 0x64, 0x79, 0x22, 0x2d, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x19, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x40, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x74, + 0x65, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x49, 0x74, + 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x75, 0x62, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, + 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x42, 0x04, 0x5a, 0x02, + 0x2e, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2808,7 +2911,7 @@ func file_spis_proto_rawDescGZIP() []byte { return file_spis_proto_rawDescData } -var file_spis_proto_msgTypes = make([]protoimpl.MessageInfo, 44) +var file_spis_proto_msgTypes = make([]protoimpl.MessageInfo, 46) var file_spis_proto_goTypes = []interface{}{ (*SystemCallRequest)(nil), // 0: protobuf.SystemCallRequest (*SystemCallResult)(nil), // 1: protobuf.SystemCallResult @@ -2818,57 +2921,59 @@ var file_spis_proto_goTypes = []interface{}{ (*CheckUsernameAvailabilityResult)(nil), // 5: protobuf.CheckUsernameAvailabilityResult (*SignupRequest)(nil), // 6: protobuf.SignupRequest (*SignupResult)(nil), // 7: protobuf.SignupResult - (*VerifyRequest)(nil), // 8: protobuf.VerifyRequest - (*VerifyResult)(nil), // 9: protobuf.VerifyResult - (*LoginRequest)(nil), // 10: protobuf.LoginRequest - (*LoginResult)(nil), // 11: protobuf.LoginResult - (*GetProfileByUserRequest)(nil), // 12: protobuf.GetProfileByUserRequest - (*GetProfileByUserResult)(nil), // 13: protobuf.GetProfileByUserResult - (*UpdateProfileByUserRequest)(nil), // 14: protobuf.UpdateProfileByUserRequest - (*UpdateProfileByUserResult)(nil), // 15: protobuf.UpdateProfileByUserResult - (*ChangePasswordRequest)(nil), // 16: protobuf.ChangePasswordRequest - (*ChangePasswordResult)(nil), // 17: protobuf.ChangePasswordResult - (*ResetPasswordRequest)(nil), // 18: protobuf.ResetPasswordRequest - (*ResetPasswordResult)(nil), // 19: protobuf.ResetPasswordResult - (*LogoutRequest)(nil), // 20: protobuf.LogoutRequest - (*LogoutResult)(nil), // 21: protobuf.LogoutResult - (*WebfingerRequest)(nil), // 22: protobuf.WebfingerRequest - (*WebfingerResult)(nil), // 23: protobuf.WebfingerResult - (*GetPackagesRequest)(nil), // 24: protobuf.GetPackagesRequest - (*GetPackagesResult)(nil), // 25: protobuf.GetPackagesResult - (*GetActorRequest)(nil), // 26: protobuf.GetActorRequest - (*GetActorResult)(nil), // 27: protobuf.GetActorResult - (*FollowActorRequest)(nil), // 28: protobuf.FollowActorRequest - (*FollowActorResult)(nil), // 29: protobuf.FollowActorResult - (*AuthorizeInteractionRequest)(nil), // 30: protobuf.AuthorizeInteractionRequest - (*AuthorizeInteractionResult)(nil), // 31: protobuf.AuthorizeInteractionResult - (*GetFollowersRequest)(nil), // 32: protobuf.GetFollowersRequest - (*GetFollowersResult)(nil), // 33: protobuf.GetFollowersResult - (*GetFollowingRequest)(nil), // 34: protobuf.GetFollowingRequest - (*GetFollowingResult)(nil), // 35: protobuf.GetFollowingResult - (*PostToOutboxRequest)(nil), // 36: protobuf.PostToOutboxRequest - (*PostToOutboxResult)(nil), // 37: protobuf.PostToOutboxResult - (*GetOutboxRequest)(nil), // 38: protobuf.GetOutboxRequest - (*GetOutboxResult)(nil), // 39: protobuf.GetOutboxResult - (*PostToInboxRequest)(nil), // 40: protobuf.PostToInboxRequest - (*PostToInboxResult)(nil), // 41: protobuf.PostToInboxResult - (*GetInboxRequest)(nil), // 42: protobuf.GetInboxRequest - (*GetInboxResult)(nil), // 43: protobuf.GetInboxResult - (*Document)(nil), // 44: protobuf.Document - (*ActivityPubLink)(nil), // 45: protobuf.ActivityPubLink - (*ActivityPubMedia)(nil), // 46: protobuf.ActivityPubMedia - (*ActivityPubPublicKey)(nil), // 47: protobuf.ActivityPubPublicKey - (*ActivityPubActivity)(nil), // 48: protobuf.ActivityPubActivity + (*ResendVerificationCodeRequest)(nil), // 8: protobuf.ResendVerificationCodeRequest + (*ResendVerificationCodeResult)(nil), // 9: protobuf.ResendVerificationCodeResult + (*VerifyRequest)(nil), // 10: protobuf.VerifyRequest + (*VerifyResult)(nil), // 11: protobuf.VerifyResult + (*LoginRequest)(nil), // 12: protobuf.LoginRequest + (*LoginResult)(nil), // 13: protobuf.LoginResult + (*GetProfileByUserRequest)(nil), // 14: protobuf.GetProfileByUserRequest + (*GetProfileByUserResult)(nil), // 15: protobuf.GetProfileByUserResult + (*UpdateProfileByUserRequest)(nil), // 16: protobuf.UpdateProfileByUserRequest + (*UpdateProfileByUserResult)(nil), // 17: protobuf.UpdateProfileByUserResult + (*ChangePasswordRequest)(nil), // 18: protobuf.ChangePasswordRequest + (*ChangePasswordResult)(nil), // 19: protobuf.ChangePasswordResult + (*ResetPasswordRequest)(nil), // 20: protobuf.ResetPasswordRequest + (*ResetPasswordResult)(nil), // 21: protobuf.ResetPasswordResult + (*LogoutRequest)(nil), // 22: protobuf.LogoutRequest + (*LogoutResult)(nil), // 23: protobuf.LogoutResult + (*WebfingerRequest)(nil), // 24: protobuf.WebfingerRequest + (*WebfingerResult)(nil), // 25: protobuf.WebfingerResult + (*GetPackagesRequest)(nil), // 26: protobuf.GetPackagesRequest + (*GetPackagesResult)(nil), // 27: protobuf.GetPackagesResult + (*GetActorRequest)(nil), // 28: protobuf.GetActorRequest + (*GetActorResult)(nil), // 29: protobuf.GetActorResult + (*FollowActorRequest)(nil), // 30: protobuf.FollowActorRequest + (*FollowActorResult)(nil), // 31: protobuf.FollowActorResult + (*AuthorizeInteractionRequest)(nil), // 32: protobuf.AuthorizeInteractionRequest + (*AuthorizeInteractionResult)(nil), // 33: protobuf.AuthorizeInteractionResult + (*GetFollowersRequest)(nil), // 34: protobuf.GetFollowersRequest + (*GetFollowersResult)(nil), // 35: protobuf.GetFollowersResult + (*GetFollowingRequest)(nil), // 36: protobuf.GetFollowingRequest + (*GetFollowingResult)(nil), // 37: protobuf.GetFollowingResult + (*PostToOutboxRequest)(nil), // 38: protobuf.PostToOutboxRequest + (*PostToOutboxResult)(nil), // 39: protobuf.PostToOutboxResult + (*GetOutboxRequest)(nil), // 40: protobuf.GetOutboxRequest + (*GetOutboxResult)(nil), // 41: protobuf.GetOutboxResult + (*PostToInboxRequest)(nil), // 42: protobuf.PostToInboxRequest + (*PostToInboxResult)(nil), // 43: protobuf.PostToInboxResult + (*GetInboxRequest)(nil), // 44: protobuf.GetInboxRequest + (*GetInboxResult)(nil), // 45: protobuf.GetInboxResult + (*Document)(nil), // 46: protobuf.Document + (*ActivityPubLink)(nil), // 47: protobuf.ActivityPubLink + (*ActivityPubMedia)(nil), // 48: protobuf.ActivityPubMedia + (*ActivityPubPublicKey)(nil), // 49: protobuf.ActivityPubPublicKey + (*ActivityPubActivity)(nil), // 50: protobuf.ActivityPubActivity } var file_spis_proto_depIdxs = []int32{ - 44, // 0: protobuf.EchoRequest.document:type_name -> protobuf.Document - 44, // 1: protobuf.EchoResult.document:type_name -> protobuf.Document - 45, // 2: protobuf.WebfingerResult.links:type_name -> protobuf.ActivityPubLink - 46, // 3: protobuf.GetActorResult.icon:type_name -> protobuf.ActivityPubMedia - 46, // 4: protobuf.GetActorResult.image:type_name -> protobuf.ActivityPubMedia - 47, // 5: protobuf.GetActorResult.publicKey:type_name -> protobuf.ActivityPubPublicKey - 48, // 6: protobuf.GetOutboxResult.orderedItems:type_name -> protobuf.ActivityPubActivity - 48, // 7: protobuf.GetInboxResult.orderedItems:type_name -> protobuf.ActivityPubActivity + 46, // 0: protobuf.EchoRequest.document:type_name -> protobuf.Document + 46, // 1: protobuf.EchoResult.document:type_name -> protobuf.Document + 47, // 2: protobuf.WebfingerResult.links:type_name -> protobuf.ActivityPubLink + 48, // 3: protobuf.GetActorResult.icon:type_name -> protobuf.ActivityPubMedia + 48, // 4: protobuf.GetActorResult.image:type_name -> protobuf.ActivityPubMedia + 49, // 5: protobuf.GetActorResult.publicKey:type_name -> protobuf.ActivityPubPublicKey + 50, // 6: protobuf.GetOutboxResult.orderedItems:type_name -> protobuf.ActivityPubActivity + 50, // 7: protobuf.GetInboxResult.orderedItems:type_name -> protobuf.ActivityPubActivity 8, // [8:8] is the sub-list for method output_type 8, // [8:8] is the sub-list for method input_type 8, // [8:8] is the sub-list for extension type_name @@ -2980,7 +3085,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyRequest); i { + switch v := v.(*ResendVerificationCodeRequest); i { case 0: return &v.state case 1: @@ -2992,7 +3097,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyResult); i { + switch v := v.(*ResendVerificationCodeResult); i { case 0: return &v.state case 1: @@ -3004,7 +3109,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginRequest); i { + switch v := v.(*VerifyRequest); i { case 0: return &v.state case 1: @@ -3016,7 +3121,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginResult); i { + switch v := v.(*VerifyResult); i { case 0: return &v.state case 1: @@ -3028,7 +3133,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetProfileByUserRequest); i { + switch v := v.(*LoginRequest); i { case 0: return &v.state case 1: @@ -3040,7 +3145,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetProfileByUserResult); i { + switch v := v.(*LoginResult); i { case 0: return &v.state case 1: @@ -3052,7 +3157,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProfileByUserRequest); i { + switch v := v.(*GetProfileByUserRequest); i { case 0: return &v.state case 1: @@ -3064,7 +3169,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProfileByUserResult); i { + switch v := v.(*GetProfileByUserResult); i { case 0: return &v.state case 1: @@ -3076,7 +3181,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangePasswordRequest); i { + switch v := v.(*UpdateProfileByUserRequest); i { case 0: return &v.state case 1: @@ -3088,7 +3193,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangePasswordResult); i { + switch v := v.(*UpdateProfileByUserResult); i { case 0: return &v.state case 1: @@ -3100,7 +3205,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResetPasswordRequest); i { + switch v := v.(*ChangePasswordRequest); i { case 0: return &v.state case 1: @@ -3112,7 +3217,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResetPasswordResult); i { + switch v := v.(*ChangePasswordResult); i { case 0: return &v.state case 1: @@ -3124,7 +3229,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogoutRequest); i { + switch v := v.(*ResetPasswordRequest); i { case 0: return &v.state case 1: @@ -3136,7 +3241,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogoutResult); i { + switch v := v.(*ResetPasswordResult); i { case 0: return &v.state case 1: @@ -3148,7 +3253,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebfingerRequest); i { + switch v := v.(*LogoutRequest); i { case 0: return &v.state case 1: @@ -3160,7 +3265,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebfingerResult); i { + switch v := v.(*LogoutResult); i { case 0: return &v.state case 1: @@ -3172,7 +3277,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPackagesRequest); i { + switch v := v.(*WebfingerRequest); i { case 0: return &v.state case 1: @@ -3184,7 +3289,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPackagesResult); i { + switch v := v.(*WebfingerResult); i { case 0: return &v.state case 1: @@ -3196,7 +3301,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetActorRequest); i { + switch v := v.(*GetPackagesRequest); i { case 0: return &v.state case 1: @@ -3208,7 +3313,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetActorResult); i { + switch v := v.(*GetPackagesResult); i { case 0: return &v.state case 1: @@ -3220,7 +3325,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FollowActorRequest); i { + switch v := v.(*GetActorRequest); i { case 0: return &v.state case 1: @@ -3232,7 +3337,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FollowActorResult); i { + switch v := v.(*GetActorResult); i { case 0: return &v.state case 1: @@ -3244,7 +3349,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuthorizeInteractionRequest); i { + switch v := v.(*FollowActorRequest); i { case 0: return &v.state case 1: @@ -3256,7 +3361,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuthorizeInteractionResult); i { + switch v := v.(*FollowActorResult); i { case 0: return &v.state case 1: @@ -3268,7 +3373,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFollowersRequest); i { + switch v := v.(*AuthorizeInteractionRequest); i { case 0: return &v.state case 1: @@ -3280,7 +3385,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFollowersResult); i { + switch v := v.(*AuthorizeInteractionResult); i { case 0: return &v.state case 1: @@ -3292,7 +3397,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFollowingRequest); i { + switch v := v.(*GetFollowersRequest); i { case 0: return &v.state case 1: @@ -3304,7 +3409,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFollowingResult); i { + switch v := v.(*GetFollowersResult); i { case 0: return &v.state case 1: @@ -3316,7 +3421,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostToOutboxRequest); i { + switch v := v.(*GetFollowingRequest); i { case 0: return &v.state case 1: @@ -3328,7 +3433,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostToOutboxResult); i { + switch v := v.(*GetFollowingResult); i { case 0: return &v.state case 1: @@ -3340,7 +3445,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOutboxRequest); i { + switch v := v.(*PostToOutboxRequest); i { case 0: return &v.state case 1: @@ -3352,7 +3457,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOutboxResult); i { + switch v := v.(*PostToOutboxResult); i { case 0: return &v.state case 1: @@ -3364,7 +3469,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostToInboxRequest); i { + switch v := v.(*GetOutboxRequest); i { case 0: return &v.state case 1: @@ -3376,7 +3481,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostToInboxResult); i { + switch v := v.(*GetOutboxResult); i { case 0: return &v.state case 1: @@ -3388,7 +3493,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInboxRequest); i { + switch v := v.(*PostToInboxRequest); i { case 0: return &v.state case 1: @@ -3400,6 +3505,30 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostToInboxResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spis_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetInboxRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spis_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetInboxResult); i { case 0: return &v.state @@ -3418,7 +3547,7 @@ func file_spis_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_spis_proto_rawDesc, NumEnums: 0, - NumMessages: 44, + NumMessages: 46, NumExtensions: 0, NumServices: 0, }, diff --git a/components/api/protobuf/spis.proto b/components/api/protobuf/spis.proto index a9757cd..3815ee0 100644 --- a/components/api/protobuf/spis.proto +++ b/components/api/protobuf/spis.proto @@ -48,6 +48,16 @@ message SignupResult { string code = 0x00000002; } +// API: ResendVerificationCode +//----------------------------------------------------------- +message ResendVerificationCodeRequest { + string email = 0x00000001; +} + +message ResendVerificationCodeResult { + string code = 0x00000001; +} + // API: Verify //----------------------------------------------------------- message VerifyRequest { diff --git a/components/api/services/resend_verification_code_service.go b/components/api/services/resend_verification_code_service.go new file mode 100644 index 0000000..f70f868 --- /dev/null +++ b/components/api/services/resend_verification_code_service.go @@ -0,0 +1,23 @@ +package services + +import ( + . "github.com/reiver/greatape/components/api/protobuf" + . "github.com/reiver/greatape/components/contracts" + . "github.com/reiver/greatape/components/core" + . "github.com/xeronith/diamante/contracts/service" +) + +func ResendVerificationCodeService(context IContext, input *ResendVerificationCodeRequest) (result *ResendVerificationCodeResult, err error) { + source := "resend_verification_code" + /* //////// */ Conductor.LogRemoteCall(context, INIT, source, input, result, err) + defer func() { Conductor.LogRemoteCall(context, DONE, source, input, result, err) }() + + commandResult, err := Conductor.ResendVerificationCode(input.Email, context.Identity()) + if err != nil { + return nil, err + } + + result = context.ResultContainer().(*ResendVerificationCodeResult) + result.Code = commandResult.Code() + return result, nil +} diff --git a/components/constants/errors.go b/components/constants/errors.go index 82ad407..a0ff41e 100644 --- a/components/constants/errors.go +++ b/components/constants/errors.go @@ -51,6 +51,7 @@ const ( ERROR_MESSAGE_INVALID_USERNAME_FOR_SIGNUP = "ERROR_MESSAGE_INVALID_USERNAME_FOR_SIGNUP" ERROR_MESSAGE_INVALID_EMAIL_FOR_SIGNUP = "ERROR_MESSAGE_INVALID_EMAIL_FOR_SIGNUP" ERROR_MESSAGE_INVALID_PASSWORD_FOR_SIGNUP = "ERROR_MESSAGE_INVALID_PASSWORD_FOR_SIGNUP" + ERROR_MESSAGE_INVALID_EMAIL_FOR_RESEND_VERIFICATION_CODE = "ERROR_MESSAGE_INVALID_EMAIL_FOR_RESEND_VERIFICATION_CODE" ERROR_MESSAGE_INVALID_EMAIL_FOR_VERIFY = "ERROR_MESSAGE_INVALID_EMAIL_FOR_VERIFY" ERROR_MESSAGE_INVALID_EMAIL_FOR_LOGIN = "ERROR_MESSAGE_INVALID_EMAIL_FOR_LOGIN" ERROR_MESSAGE_INVALID_PASSWORD_FOR_LOGIN = "ERROR_MESSAGE_INVALID_PASSWORD_FOR_LOGIN" @@ -120,6 +121,7 @@ var ( ERROR_INVALID_USERNAME_FOR_SIGNUP = errors.New(ERROR_MESSAGE_INVALID_USERNAME_FOR_SIGNUP) ERROR_INVALID_EMAIL_FOR_SIGNUP = errors.New(ERROR_MESSAGE_INVALID_EMAIL_FOR_SIGNUP) ERROR_INVALID_PASSWORD_FOR_SIGNUP = errors.New(ERROR_MESSAGE_INVALID_PASSWORD_FOR_SIGNUP) + ERROR_INVALID_EMAIL_FOR_RESEND_VERIFICATION_CODE = errors.New(ERROR_MESSAGE_INVALID_EMAIL_FOR_RESEND_VERIFICATION_CODE) ERROR_INVALID_EMAIL_FOR_VERIFY = errors.New(ERROR_MESSAGE_INVALID_EMAIL_FOR_VERIFY) ERROR_INVALID_EMAIL_FOR_LOGIN = errors.New(ERROR_MESSAGE_INVALID_EMAIL_FOR_LOGIN) ERROR_INVALID_PASSWORD_FOR_LOGIN = errors.New(ERROR_MESSAGE_INVALID_PASSWORD_FOR_LOGIN) diff --git a/components/constants/resources.en-US.go b/components/constants/resources.en-US.go index c0d0020..61bb547 100644 --- a/components/constants/resources.en-US.go +++ b/components/constants/resources.en-US.go @@ -51,6 +51,7 @@ var Errors = Resource{ ERROR_MESSAGE_INVALID_USERNAME_FOR_SIGNUP: "invalid_username", ERROR_MESSAGE_INVALID_EMAIL_FOR_SIGNUP: "invalid_email", ERROR_MESSAGE_INVALID_PASSWORD_FOR_SIGNUP: "invalid_password", + ERROR_MESSAGE_INVALID_EMAIL_FOR_RESEND_VERIFICATION_CODE: "invalid_email", ERROR_MESSAGE_INVALID_EMAIL_FOR_VERIFY: "invalid_email", ERROR_MESSAGE_INVALID_EMAIL_FOR_LOGIN: "invalid_email", ERROR_MESSAGE_INVALID_PASSWORD_FOR_LOGIN: "invalid_password", diff --git a/components/contracts/api.go b/components/contracts/api.go index 9880cfc..b33752a 100644 --- a/components/contracts/api.go +++ b/components/contracts/api.go @@ -10,6 +10,7 @@ type IApi interface { Echo(*EchoRequest) (*EchoResult, error) CheckUsernameAvailability(*CheckUsernameAvailabilityRequest) (*CheckUsernameAvailabilityResult, error) Signup(*SignupRequest) (*SignupResult, error) + ResendVerificationCode(*ResendVerificationCodeRequest) (*ResendVerificationCodeResult, error) Verify(*VerifyRequest) (*VerifyResult, error) Login(*LoginRequest) (*LoginResult, error) GetProfileByUser(*GetProfileByUserRequest) (*GetProfileByUserResult, error) diff --git a/components/contracts/opcodes.go b/components/contracts/opcodes.go index c5288d0..8441da0 100644 --- a/components/contracts/opcodes.go +++ b/components/contracts/opcodes.go @@ -20,6 +20,10 @@ const ( SIGNUP_REQUEST = 0x48DB23BF SIGNUP_RESULT = 0x83D062B4 + //ResendVerificationCodeOperation + RESEND_VERIFICATION_CODE_REQUEST = 0x03373782 + RESEND_VERIFICATION_CODE_RESULT = 0x6B101891 + //VerifyOperation VERIFY_REQUEST = 0x8B78F7F6 VERIFY_RESULT = 0x2C8A8A49 @@ -101,6 +105,8 @@ var OPCODES = Opcodes{ 0x067190FF: "CheckUsernameAvailability", 0x48DB23BF: "SIGNUP", 0x83D062B4: "Signup", + 0x03373782: "RESEND_VERIFICATION_CODE", + 0x6B101891: "ResendVerificationCode", 0x8B78F7F6: "VERIFY", 0x2C8A8A49: "Verify", 0xF480F151: "LOGIN", diff --git a/components/contracts/spi.go b/components/contracts/spi.go index 8f0646a..2d66bb6 100644 --- a/components/contracts/spi.go +++ b/components/contracts/spi.go @@ -58,6 +58,7 @@ type ( Echo(document IDocument, editor Identity) (IEchoResult, error) CheckUsernameAvailability(username string, editor Identity) (ICheckUsernameAvailabilityResult, error) Signup(username string, email string, password string, editor Identity) (ISignupResult, error) + ResendVerificationCode(email string, editor Identity) (IResendVerificationCodeResult, error) Verify(email string, token string, code string, editor Identity) (IVerifyResult, error) Login(email string, password string, editor Identity) (ILoginResult, error) GetProfileByUser(editor Identity) (IGetProfileByUserResult, error) @@ -91,6 +92,10 @@ type ( Code() string } + IResendVerificationCodeResult interface { + Code() string + } + IVerifyResult interface { Token() string } diff --git a/components/contracts/system_component.go b/components/contracts/system_component.go index 25d554f..999b1dd 100644 --- a/components/contracts/system_component.go +++ b/components/contracts/system_component.go @@ -260,6 +260,7 @@ type ( Echo(document IDocument, editor Identity) (IEchoResult, error) CheckUsernameAvailability(username string, editor Identity) (ICheckUsernameAvailabilityResult, error) Signup(username string, email string, password string, editor Identity) (ISignupResult, error) + ResendVerificationCode(email string, editor Identity) (IResendVerificationCodeResult, error) Verify(email string, token string, code string, editor Identity) (IVerifyResult, error) Login(email string, password string, editor Identity) (ILoginResult, error) GetProfileByUser(editor Identity) (IGetProfileByUserResult, error) @@ -299,6 +300,7 @@ type ( NewEchoResult(document IDocument, ignored interface{}) IEchoResult NewCheckUsernameAvailabilityResult(isAvailable bool, ignored interface{}) ICheckUsernameAvailabilityResult NewSignupResult(token string, code string, ignored interface{}) ISignupResult + NewResendVerificationCodeResult(code string, ignored interface{}) IResendVerificationCodeResult NewVerifyResult(token string, ignored interface{}) IVerifyResult NewLoginResult(username string, token string, ignored interface{}) ILoginResult NewGetProfileByUserResult(username string, displayName string, avatar string, banner string, summary string, github string, ignored interface{}) IGetProfileByUserResult diff --git a/components/contracts/system_dispatcher.go b/components/contracts/system_dispatcher.go index 412e8cd..06d6dc4 100644 --- a/components/contracts/system_dispatcher.go +++ b/components/contracts/system_dispatcher.go @@ -1035,6 +1035,7 @@ type IDispatcher interface { Echo(document IDocument) (IEchoResult, error) CheckUsernameAvailability(username string) (ICheckUsernameAvailabilityResult, error) Signup(username string, email string, password string) (ISignupResult, error) + ResendVerificationCode(email string) (IResendVerificationCodeResult, error) Verify(email string, token string, code string) (IVerifyResult, error) Login(email string, password string) (ILoginResult, error) GetProfileByUser() (IGetProfileByUserResult, error) @@ -1128,6 +1129,8 @@ type IDispatcher interface { NewCheckUsernameAvailabilityResult(isAvailable bool) ICheckUsernameAvailabilityResult // NewSignupResult creates a new result container for 'Signup' system action. NewSignupResult(token string, code string) ISignupResult + // NewResendVerificationCodeResult creates a new result container for 'Resend Verification Code' system action. + NewResendVerificationCodeResult(code string) IResendVerificationCodeResult // NewVerifyResult creates a new result container for 'Verify' system action. NewVerifyResult(token string) IVerifyResult // NewLoginResult creates a new result container for 'Login' system action. diff --git a/components/core/api_methods.go b/components/core/api_methods.go index e94ffab..e13ed61 100644 --- a/components/core/api_methods.go +++ b/components/core/api_methods.go @@ -45,6 +45,16 @@ func (api *api) Signup(request *SignupRequest) (*SignupResult, error) { } } +func (api *api) ResendVerificationCode(request *ResendVerificationCodeRequest) (*ResendVerificationCodeResult, error) { + result, err := api.call(RESEND_VERIFICATION_CODE_REQUEST, request) + + if err != nil { + return nil, err + } else { + return result.(*ResendVerificationCodeResult), nil + } +} + func (api *api) Verify(request *VerifyRequest) (*VerifyResult, error) { result, err := api.call(VERIFY_REQUEST, request) @@ -230,6 +240,7 @@ func init() { API_RESULT[ECHO_RESULT] = EchoResult{} API_RESULT[CHECK_USERNAME_AVAILABILITY_RESULT] = CheckUsernameAvailabilityResult{} API_RESULT[SIGNUP_RESULT] = SignupResult{} + API_RESULT[RESEND_VERIFICATION_CODE_RESULT] = ResendVerificationCodeResult{} API_RESULT[VERIFY_RESULT] = VerifyResult{} API_RESULT[LOGIN_RESULT] = LoginResult{} API_RESULT[GET_PROFILE_BY_USER_RESULT] = GetProfileByUserResult{} diff --git a/components/core/initializer.go b/components/core/initializer.go index 06067de..e91fb7d 100644 --- a/components/core/initializer.go +++ b/components/core/initializer.go @@ -1106,6 +1106,10 @@ func (conductor *conductor) Signup(username string, email string, password strin return conductor.spiManager.Signup(username, email, password, editor) } +func (conductor *conductor) ResendVerificationCode(email string, editor Identity) (IResendVerificationCodeResult, error) { + return conductor.spiManager.ResendVerificationCode(email, editor) +} + func (conductor *conductor) Verify(email string, token string, code string, editor Identity) (IVerifyResult, error) { return conductor.spiManager.Verify(email, token, code, editor) } @@ -1258,6 +1262,10 @@ func (conductor *conductor) NewSignupResult(token string, code string, _ interfa return NewSignupResult(token, code, nil) } +func (conductor *conductor) NewResendVerificationCodeResult(code string, _ interface{}) IResendVerificationCodeResult { + return NewResendVerificationCodeResult(code, nil) +} + func (conductor *conductor) NewVerifyResult(token string, _ interface{}) IVerifyResult { return NewVerifyResult(token, nil) } diff --git a/components/core/spi.go b/components/core/spi.go index 2d7e2fb..fb34a08 100644 --- a/components/core/spi.go +++ b/components/core/spi.go @@ -252,6 +252,10 @@ func (dispatcher *dispatcher) Signup(username string, email string, password str return dispatcher.conductor.SpiManager().Signup(username, email, password, dispatcher.identity) } +func (dispatcher *dispatcher) ResendVerificationCode(email string) (IResendVerificationCodeResult, error) { + return dispatcher.conductor.SpiManager().ResendVerificationCode(email, dispatcher.identity) +} + func (dispatcher *dispatcher) Verify(email string, token string, code string) (IVerifyResult, error) { return dispatcher.conductor.SpiManager().Verify(email, token, code, dispatcher.identity) } diff --git a/components/core/spi_manager.go b/components/core/spi_manager.go index 567c2e0..7d3f6a0 100644 --- a/components/core/spi_manager.go +++ b/components/core/spi_manager.go @@ -324,6 +324,49 @@ func (manager *spiManager) Signup(username string, email string, password string } } +//region IResendVerificationCodeResult Implementation + +type resendVerificationCodeResult struct { + code string +} + +func NewResendVerificationCodeResult(code string, _ interface{}) IResendVerificationCodeResult { + return &resendVerificationCodeResult{ + code: code, + } +} + +func (result resendVerificationCodeResult) Code() string { + return result.code +} + +//endregion + +func (manager *spiManager) ResendVerificationCode(email string, editor Identity) (result IResendVerificationCodeResult, err error) { + if email != "" { + if match, err := manager.Match(EMAIL, email); err != nil { + return nil, err + } else if !match { + return nil, ERROR_INVALID_EMAIL_FOR_RESEND_VERIFICATION_CODE + } + } + + defer func() { + if reason := recover(); reason != nil { + err = manager.Error(reason) + } + }() + + editor.Lock(RESEND_VERIFICATION_CODE_REQUEST) + defer editor.Unlock(RESEND_VERIFICATION_CODE_REQUEST) + + if result, err = commands.ResendVerificationCode(NewDispatcher(Conductor, editor), email); err != nil { + return nil, err + } else { + return result, nil + } +} + //region IVerifyResult Implementation type verifyResult struct { diff --git a/components/core/system_results.go b/components/core/system_results.go index 0f9b188..05d0756 100644 --- a/components/core/system_results.go +++ b/components/core/system_results.go @@ -16,6 +16,10 @@ func (dispatcher *dispatcher) NewSignupResult(token string, code string) ISignup return NewSignupResult(token, code, nil) } +func (dispatcher *dispatcher) NewResendVerificationCodeResult(code string) IResendVerificationCodeResult { + return NewResendVerificationCodeResult(code, nil) +} + func (dispatcher *dispatcher) NewVerifyResult(token string) IVerifyResult { return NewVerifyResult(token, nil) }