From 29b364553f774be696feeac3c751c703a51e2388 Mon Sep 17 00:00:00 2001 From: Xeronith Date: Mon, 29 May 2023 14:07:31 +0330 Subject: [PATCH] feat(api): :sparkles: username availability --- app/commands/check_username_availability.go | 14 + components/api/api_test.go | 12 + .../check_username_availability_handler.go | 45 + components/api/handlers/factory.go | 37 +- .../check_username_availability_operation.go | 51 + components/api/operations/factory.go | 1 + components/api/protobuf/spis.pb.go | 894 ++++++++++-------- components/api/protobuf/spis.proto | 10 + .../check_username_availability_service.go | 29 + components/constants/errors.go | 196 ++-- components/constants/resources.en-US.go | 98 +- 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/spi_manager_test.go | 11 + components/core/system_results.go | 4 + 22 files changed, 941 insertions(+), 544 deletions(-) create mode 100644 app/commands/check_username_availability.go create mode 100644 components/api/handlers/check_username_availability_handler.go create mode 100644 components/api/operations/check_username_availability_operation.go create mode 100644 components/api/services/check_username_availability_service.go diff --git a/app/commands/check_username_availability.go b/app/commands/check_username_availability.go new file mode 100644 index 0000000..b56f47a --- /dev/null +++ b/app/commands/check_username_availability.go @@ -0,0 +1,14 @@ +package commands + +import . "github.com/reiver/greatape/components/contracts" + +func CheckUsernameAvailability(x IDispatcher, username string) (ICheckUsernameAvailabilityResult, error) { + isAvailable := true + if x.IdentityExistsWhich(func(identity IIdentity) bool { + return identity.Username() == username + }) { + isAvailable = false + } + + return x.NewCheckUsernameAvailabilityResult(isAvailable), nil +} diff --git a/components/api/api_test.go b/components/api/api_test.go index ae5db9b..602a2a2 100644 --- a/components/api/api_test.go +++ b/components/api/api_test.go @@ -45,6 +45,18 @@ func TestEchoApi(test *testing.T) { } } +func TestCheckUsernameAvailabilityApi(test *testing.T) { + input := &CheckUsernameAvailabilityRequest{ + Username: "username", + } + + if output, err := api.CheckUsernameAvailability(input); err != nil { + test.Fatal(err) + } else if output == nil { + test.Fail() + } +} + func TestSignupApi(test *testing.T) { input := &SignupRequest{ Username: "username", diff --git a/components/api/handlers/check_username_availability_handler.go b/components/api/handlers/check_username_availability_handler.go new file mode 100644 index 0000000..64cf692 --- /dev/null +++ b/components/api/handlers/check_username_availability_handler.go @@ -0,0 +1,45 @@ +package handlers + +import ( + "net/http" + + . "github.com/reiver/greatape/components/api/protobuf" + . "github.com/reiver/greatape/components/contracts" + . "github.com/xeronith/diamante/contracts/network/http" + pipeline "github.com/xeronith/diamante/network/http" +) + +type checkUsernameAvailabilityHandler struct { +} + +func CheckUsernameAvailabilityHandler() IHttpHandler { + return &checkUsernameAvailabilityHandler{} +} + +func (handler *checkUsernameAvailabilityHandler) Method() string { + return http.MethodPost +} + +func (handler *checkUsernameAvailabilityHandler) Path() string { + return "/api/v1/check-username" +} + +func (handler *checkUsernameAvailabilityHandler) HandlerFunc() HttpHandlerFunc { + return func(x IServerDispatcher) error { + request := &CheckUsernameAvailabilityRequest{} + result := &CheckUsernameAvailabilityResult{} + + onRequestUnmarshalled := func(request *CheckUsernameAvailabilityRequest) { + } + + return pipeline.Handle(x, + "check_username_availability", + CHECK_USERNAME_AVAILABILITY_REQUEST, + CHECK_USERNAME_AVAILABILITY_RESULT, + request, result, + onRequestUnmarshalled, + nil, + false, + ) + } +} diff --git a/components/api/handlers/factory.go b/components/api/handlers/factory.go index 1bd792f..5b3607f 100644 --- a/components/api/handlers/factory.go +++ b/components/api/handlers/factory.go @@ -6,24 +6,25 @@ type httpHandlerFactory struct{} func (factory *httpHandlerFactory) Handlers() []IHttpHandler { return []IHttpHandler{ - EchoHandler(), // │ P . /api/v1/echo - SignupHandler(), // │ P . /api/v1/signup - VerifyHandler(), // │ P . /api/v1/verify - LoginHandler(), // │ P . /api/v1/login - GetProfileByUserHandler(), // │ G . /api/v1/profile - UpdateProfileByUserHandler(), // │ P . /api/v1/profile - LogoutHandler(), // │ P . /api/v1/logout - WebfingerHandler(), // │ G . /.well-known/webfinger - GetPackagesHandler(), // │ G . /.well-known/packages.txt - GetActorHandler(), // │ G . /u/:username - FollowActorHandler(), // │ G . /u/:username/follow - AuthorizeInteractionHandler(), // │ G . /authorize_interaction - GetFollowersHandler(), // │ G . /u/:username/followers - GetFollowingHandler(), // │ G . /u/:username/following - PostToOutboxHandler(), // │ P . /u/:username/outbox - GetOutboxHandler(), // │ G . /u/:username/outbox - PostToInboxHandler(), // │ P . /u/:username/inbox - GetInboxHandler(), // │ G . /u/:username/inbox + EchoHandler(), // │ P . /api/v1/echo + CheckUsernameAvailabilityHandler(), // │ P . /api/v1/check-username + SignupHandler(), // │ P . /api/v1/signup + VerifyHandler(), // │ P . /api/v1/verify + LoginHandler(), // │ P . /api/v1/login + GetProfileByUserHandler(), // │ G . /api/v1/profile + UpdateProfileByUserHandler(), // │ P . /api/v1/profile + LogoutHandler(), // │ P . /api/v1/logout + WebfingerHandler(), // │ G . /.well-known/webfinger + GetPackagesHandler(), // │ G . /.well-known/packages.txt + GetActorHandler(), // │ G . /u/:username + FollowActorHandler(), // │ G . /u/:username/follow + AuthorizeInteractionHandler(), // │ G . /authorize_interaction + GetFollowersHandler(), // │ G . /u/:username/followers + GetFollowingHandler(), // │ G . /u/:username/following + PostToOutboxHandler(), // │ P . /u/:username/outbox + GetOutboxHandler(), // │ G . /u/:username/outbox + PostToInboxHandler(), // │ P . /u/:username/inbox + GetInboxHandler(), // │ G . /u/:username/inbox } } diff --git a/components/api/operations/check_username_availability_operation.go b/components/api/operations/check_username_availability_operation.go new file mode 100644 index 0000000..e409e92 --- /dev/null +++ b/components/api/operations/check_username_availability_operation.go @@ -0,0 +1,51 @@ +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 checkUsernameAvailabilityOperation struct { + Operation + + run func(IContext, *CheckUsernameAvailabilityRequest) (*CheckUsernameAvailabilityResult, error) +} + +func CheckUsernameAvailabilityOperation() IOperation { + return &checkUsernameAvailabilityOperation{ + run: CheckUsernameAvailabilityService, + } +} + +func (operation *checkUsernameAvailabilityOperation) Id() (ID, ID) { + return CHECK_USERNAME_AVAILABILITY_REQUEST, CHECK_USERNAME_AVAILABILITY_RESULT +} + +func (operation *checkUsernameAvailabilityOperation) InputContainer() Pointer { + return new(CheckUsernameAvailabilityRequest) +} + +func (operation *checkUsernameAvailabilityOperation) OutputContainer() Pointer { + return new(CheckUsernameAvailabilityResult) +} + +func (operation *checkUsernameAvailabilityOperation) Execute(context IContext, payload Pointer) (Pointer, error) { + return operation.run(context, payload.(*CheckUsernameAvailabilityRequest)) +} + +/* +func (operation *checkUsernameAvailabilityOperation) ExecutionTimeLimits() (Duration, Duration, Duration) { + var ( + TIME_LIMIT_WARNING Duration = 20_000_000 + TIME_LIMIT_ALERT Duration = 35_000_000 + TIME_LIMIT_CRITICAL Duration = 50_000_000 + ) + + return TIME_LIMIT_WARNING, TIME_LIMIT_ALERT, TIME_LIMIT_CRITICAL +} +*/ diff --git a/components/api/operations/factory.go b/components/api/operations/factory.go index bda086b..3b68a14 100644 --- a/components/api/operations/factory.go +++ b/components/api/operations/factory.go @@ -8,6 +8,7 @@ func (factory *operationFactory) Operations() []IOperation { return []IOperation{ SystemCallOperation(), EchoOperation(), + CheckUsernameAvailabilityOperation(), SignupOperation(), VerifyOperation(), LoginOperation(), diff --git a/components/api/protobuf/spis.pb.go b/components/api/protobuf/spis.pb.go index a02ecfd..c03fef4 100644 --- a/components/api/protobuf/spis.pb.go +++ b/components/api/protobuf/spis.pb.go @@ -203,6 +203,102 @@ func (x *EchoResult) GetDocument() *Document { return nil } +// API: CheckUsernameAvailability +// ----------------------------------------------------------- +type CheckUsernameAvailabilityRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` +} + +func (x *CheckUsernameAvailabilityRequest) Reset() { + *x = CheckUsernameAvailabilityRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_spis_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckUsernameAvailabilityRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckUsernameAvailabilityRequest) ProtoMessage() {} + +func (x *CheckUsernameAvailabilityRequest) ProtoReflect() protoreflect.Message { + mi := &file_spis_proto_msgTypes[4] + 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 CheckUsernameAvailabilityRequest.ProtoReflect.Descriptor instead. +func (*CheckUsernameAvailabilityRequest) Descriptor() ([]byte, []int) { + return file_spis_proto_rawDescGZIP(), []int{4} +} + +func (x *CheckUsernameAvailabilityRequest) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +type CheckUsernameAvailabilityResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IsAvailable bool `protobuf:"varint,1,opt,name=isAvailable,proto3" json:"isAvailable,omitempty"` +} + +func (x *CheckUsernameAvailabilityResult) Reset() { + *x = CheckUsernameAvailabilityResult{} + if protoimpl.UnsafeEnabled { + mi := &file_spis_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckUsernameAvailabilityResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckUsernameAvailabilityResult) ProtoMessage() {} + +func (x *CheckUsernameAvailabilityResult) ProtoReflect() protoreflect.Message { + mi := &file_spis_proto_msgTypes[5] + 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 CheckUsernameAvailabilityResult.ProtoReflect.Descriptor instead. +func (*CheckUsernameAvailabilityResult) Descriptor() ([]byte, []int) { + return file_spis_proto_rawDescGZIP(), []int{5} +} + +func (x *CheckUsernameAvailabilityResult) GetIsAvailable() bool { + if x != nil { + return x.IsAvailable + } + return false +} + // API: Signup // ----------------------------------------------------------- type SignupRequest struct { @@ -218,7 +314,7 @@ type SignupRequest struct { func (x *SignupRequest) Reset() { *x = SignupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[4] + mi := &file_spis_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -231,7 +327,7 @@ func (x *SignupRequest) String() string { func (*SignupRequest) ProtoMessage() {} func (x *SignupRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[4] + mi := &file_spis_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -244,7 +340,7 @@ func (x *SignupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SignupRequest.ProtoReflect.Descriptor instead. func (*SignupRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{4} + return file_spis_proto_rawDescGZIP(), []int{6} } func (x *SignupRequest) GetUsername() string { @@ -280,7 +376,7 @@ type SignupResult struct { func (x *SignupResult) Reset() { *x = SignupResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[5] + mi := &file_spis_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -293,7 +389,7 @@ func (x *SignupResult) String() string { func (*SignupResult) ProtoMessage() {} func (x *SignupResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[5] + mi := &file_spis_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -306,7 +402,7 @@ func (x *SignupResult) ProtoReflect() protoreflect.Message { // Deprecated: Use SignupResult.ProtoReflect.Descriptor instead. func (*SignupResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{5} + return file_spis_proto_rawDescGZIP(), []int{7} } func (x *SignupResult) GetToken() string { @@ -338,7 +434,7 @@ type VerifyRequest struct { func (x *VerifyRequest) Reset() { *x = VerifyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[6] + mi := &file_spis_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -351,7 +447,7 @@ func (x *VerifyRequest) String() string { func (*VerifyRequest) ProtoMessage() {} func (x *VerifyRequest) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[6] + mi := &file_spis_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -364,7 +460,7 @@ func (x *VerifyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyRequest.ProtoReflect.Descriptor instead. func (*VerifyRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{6} + return file_spis_proto_rawDescGZIP(), []int{8} } func (x *VerifyRequest) GetEmail() string { @@ -399,7 +495,7 @@ type VerifyResult struct { func (x *VerifyResult) Reset() { *x = VerifyResult{} if protoimpl.UnsafeEnabled { - mi := &file_spis_proto_msgTypes[7] + mi := &file_spis_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -412,7 +508,7 @@ func (x *VerifyResult) String() string { func (*VerifyResult) ProtoMessage() {} func (x *VerifyResult) ProtoReflect() protoreflect.Message { - mi := &file_spis_proto_msgTypes[7] + mi := &file_spis_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -425,7 +521,7 @@ func (x *VerifyResult) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyResult.ProtoReflect.Descriptor instead. func (*VerifyResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{7} + return file_spis_proto_rawDescGZIP(), []int{9} } func (x *VerifyResult) GetToken() string { @@ -449,7 +545,7 @@ type LoginRequest struct { func (x *LoginRequest) Reset() { *x = LoginRequest{} 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) } @@ -462,7 +558,7 @@ func (x *LoginRequest) String() string { func (*LoginRequest) ProtoMessage() {} func (x *LoginRequest) 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 { @@ -475,7 +571,7 @@ func (x *LoginRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LoginRequest.ProtoReflect.Descriptor instead. func (*LoginRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{8} + return file_spis_proto_rawDescGZIP(), []int{10} } func (x *LoginRequest) GetEmail() string { @@ -504,7 +600,7 @@ type LoginResult struct { func (x *LoginResult) Reset() { *x = LoginResult{} 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) } @@ -517,7 +613,7 @@ func (x *LoginResult) String() string { func (*LoginResult) ProtoMessage() {} func (x *LoginResult) 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 { @@ -530,7 +626,7 @@ func (x *LoginResult) ProtoReflect() protoreflect.Message { // Deprecated: Use LoginResult.ProtoReflect.Descriptor instead. func (*LoginResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{9} + return file_spis_proto_rawDescGZIP(), []int{11} } func (x *LoginResult) GetUsername() string { @@ -558,7 +654,7 @@ type GetProfileByUserRequest struct { func (x *GetProfileByUserRequest) Reset() { *x = GetProfileByUserRequest{} 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) } @@ -571,7 +667,7 @@ func (x *GetProfileByUserRequest) String() string { func (*GetProfileByUserRequest) ProtoMessage() {} func (x *GetProfileByUserRequest) 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 { @@ -584,7 +680,7 @@ func (x *GetProfileByUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileByUserRequest.ProtoReflect.Descriptor instead. func (*GetProfileByUserRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{10} + return file_spis_proto_rawDescGZIP(), []int{12} } type GetProfileByUserResult struct { @@ -603,7 +699,7 @@ type GetProfileByUserResult struct { func (x *GetProfileByUserResult) Reset() { *x = GetProfileByUserResult{} 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) } @@ -616,7 +712,7 @@ func (x *GetProfileByUserResult) String() string { func (*GetProfileByUserResult) ProtoMessage() {} func (x *GetProfileByUserResult) 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 { @@ -629,7 +725,7 @@ func (x *GetProfileByUserResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileByUserResult.ProtoReflect.Descriptor instead. func (*GetProfileByUserResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{11} + return file_spis_proto_rawDescGZIP(), []int{13} } func (x *GetProfileByUserResult) GetUsername() string { @@ -691,7 +787,7 @@ type UpdateProfileByUserRequest struct { func (x *UpdateProfileByUserRequest) Reset() { *x = UpdateProfileByUserRequest{} 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) } @@ -704,7 +800,7 @@ func (x *UpdateProfileByUserRequest) String() string { func (*UpdateProfileByUserRequest) ProtoMessage() {} func (x *UpdateProfileByUserRequest) 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 { @@ -717,7 +813,7 @@ func (x *UpdateProfileByUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProfileByUserRequest.ProtoReflect.Descriptor instead. func (*UpdateProfileByUserRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{12} + return file_spis_proto_rawDescGZIP(), []int{14} } func (x *UpdateProfileByUserRequest) GetDisplayName() string { @@ -770,7 +866,7 @@ type UpdateProfileByUserResult struct { func (x *UpdateProfileByUserResult) Reset() { *x = UpdateProfileByUserResult{} 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) } @@ -783,7 +879,7 @@ func (x *UpdateProfileByUserResult) String() string { func (*UpdateProfileByUserResult) ProtoMessage() {} func (x *UpdateProfileByUserResult) 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 { @@ -796,7 +892,7 @@ func (x *UpdateProfileByUserResult) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProfileByUserResult.ProtoReflect.Descriptor instead. func (*UpdateProfileByUserResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{13} + return file_spis_proto_rawDescGZIP(), []int{15} } func (x *UpdateProfileByUserResult) GetDisplayName() string { @@ -845,7 +941,7 @@ type LogoutRequest struct { func (x *LogoutRequest) Reset() { *x = LogoutRequest{} 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) } @@ -858,7 +954,7 @@ func (x *LogoutRequest) String() string { func (*LogoutRequest) ProtoMessage() {} func (x *LogoutRequest) 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 { @@ -871,7 +967,7 @@ func (x *LogoutRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LogoutRequest.ProtoReflect.Descriptor instead. func (*LogoutRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{14} + return file_spis_proto_rawDescGZIP(), []int{16} } type LogoutResult struct { @@ -883,7 +979,7 @@ type LogoutResult struct { func (x *LogoutResult) Reset() { *x = LogoutResult{} 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) } @@ -896,7 +992,7 @@ func (x *LogoutResult) String() string { func (*LogoutResult) ProtoMessage() {} func (x *LogoutResult) 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 { @@ -909,7 +1005,7 @@ func (x *LogoutResult) ProtoReflect() protoreflect.Message { // Deprecated: Use LogoutResult.ProtoReflect.Descriptor instead. func (*LogoutResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{15} + return file_spis_proto_rawDescGZIP(), []int{17} } // API: Webfinger @@ -925,7 +1021,7 @@ type WebfingerRequest struct { func (x *WebfingerRequest) Reset() { *x = WebfingerRequest{} 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) } @@ -938,7 +1034,7 @@ func (x *WebfingerRequest) String() string { func (*WebfingerRequest) ProtoMessage() {} func (x *WebfingerRequest) 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 { @@ -951,7 +1047,7 @@ func (x *WebfingerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WebfingerRequest.ProtoReflect.Descriptor instead. func (*WebfingerRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{16} + return file_spis_proto_rawDescGZIP(), []int{18} } func (x *WebfingerRequest) GetResource() string { @@ -974,7 +1070,7 @@ type WebfingerResult struct { func (x *WebfingerResult) Reset() { *x = WebfingerResult{} 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) } @@ -987,7 +1083,7 @@ func (x *WebfingerResult) String() string { func (*WebfingerResult) ProtoMessage() {} func (x *WebfingerResult) 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 { @@ -1000,7 +1096,7 @@ func (x *WebfingerResult) ProtoReflect() protoreflect.Message { // Deprecated: Use WebfingerResult.ProtoReflect.Descriptor instead. func (*WebfingerResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{17} + return file_spis_proto_rawDescGZIP(), []int{19} } func (x *WebfingerResult) GetAliases() []string { @@ -1035,7 +1131,7 @@ type GetPackagesRequest struct { func (x *GetPackagesRequest) Reset() { *x = GetPackagesRequest{} 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) } @@ -1048,7 +1144,7 @@ func (x *GetPackagesRequest) String() string { func (*GetPackagesRequest) ProtoMessage() {} func (x *GetPackagesRequest) 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 { @@ -1061,7 +1157,7 @@ func (x *GetPackagesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPackagesRequest.ProtoReflect.Descriptor instead. func (*GetPackagesRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{18} + return file_spis_proto_rawDescGZIP(), []int{20} } type GetPackagesResult struct { @@ -1075,7 +1171,7 @@ type GetPackagesResult struct { func (x *GetPackagesResult) Reset() { *x = GetPackagesResult{} 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) } @@ -1088,7 +1184,7 @@ func (x *GetPackagesResult) String() string { func (*GetPackagesResult) ProtoMessage() {} func (x *GetPackagesResult) 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 { @@ -1101,7 +1197,7 @@ func (x *GetPackagesResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPackagesResult.ProtoReflect.Descriptor instead. func (*GetPackagesResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{19} + return file_spis_proto_rawDescGZIP(), []int{21} } func (x *GetPackagesResult) GetBody() []byte { @@ -1124,7 +1220,7 @@ type GetActorRequest struct { func (x *GetActorRequest) Reset() { *x = GetActorRequest{} 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) } @@ -1137,7 +1233,7 @@ func (x *GetActorRequest) String() string { func (*GetActorRequest) ProtoMessage() {} func (x *GetActorRequest) 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 { @@ -1150,7 +1246,7 @@ func (x *GetActorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetActorRequest.ProtoReflect.Descriptor instead. func (*GetActorRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{20} + return file_spis_proto_rawDescGZIP(), []int{22} } func (x *GetActorRequest) GetUsername() string { @@ -1185,7 +1281,7 @@ type GetActorResult struct { func (x *GetActorResult) Reset() { *x = GetActorResult{} 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) } @@ -1198,7 +1294,7 @@ func (x *GetActorResult) String() string { func (*GetActorResult) ProtoMessage() {} func (x *GetActorResult) 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 { @@ -1211,7 +1307,7 @@ func (x *GetActorResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetActorResult.ProtoReflect.Descriptor instead. func (*GetActorResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{21} + return file_spis_proto_rawDescGZIP(), []int{23} } func (x *GetActorResult) GetContext() []string { @@ -1333,7 +1429,7 @@ type FollowActorRequest struct { func (x *FollowActorRequest) Reset() { *x = FollowActorRequest{} 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) } @@ -1346,7 +1442,7 @@ func (x *FollowActorRequest) String() string { func (*FollowActorRequest) ProtoMessage() {} func (x *FollowActorRequest) 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 { @@ -1359,7 +1455,7 @@ func (x *FollowActorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FollowActorRequest.ProtoReflect.Descriptor instead. func (*FollowActorRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{22} + return file_spis_proto_rawDescGZIP(), []int{24} } func (x *FollowActorRequest) GetUsername() string { @@ -1387,7 +1483,7 @@ type FollowActorResult struct { func (x *FollowActorResult) Reset() { *x = FollowActorResult{} 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) } @@ -1400,7 +1496,7 @@ func (x *FollowActorResult) String() string { func (*FollowActorResult) ProtoMessage() {} func (x *FollowActorResult) 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 { @@ -1413,7 +1509,7 @@ func (x *FollowActorResult) ProtoReflect() protoreflect.Message { // Deprecated: Use FollowActorResult.ProtoReflect.Descriptor instead. func (*FollowActorResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{23} + return file_spis_proto_rawDescGZIP(), []int{25} } func (x *FollowActorResult) GetUrl() string { @@ -1436,7 +1532,7 @@ type AuthorizeInteractionRequest struct { func (x *AuthorizeInteractionRequest) Reset() { *x = AuthorizeInteractionRequest{} 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) } @@ -1449,7 +1545,7 @@ func (x *AuthorizeInteractionRequest) String() string { func (*AuthorizeInteractionRequest) ProtoMessage() {} func (x *AuthorizeInteractionRequest) 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 { @@ -1462,7 +1558,7 @@ func (x *AuthorizeInteractionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizeInteractionRequest.ProtoReflect.Descriptor instead. func (*AuthorizeInteractionRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{24} + return file_spis_proto_rawDescGZIP(), []int{26} } func (x *AuthorizeInteractionRequest) GetUri() string { @@ -1484,7 +1580,7 @@ type AuthorizeInteractionResult struct { func (x *AuthorizeInteractionResult) Reset() { *x = AuthorizeInteractionResult{} 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) } @@ -1497,7 +1593,7 @@ func (x *AuthorizeInteractionResult) String() string { func (*AuthorizeInteractionResult) ProtoMessage() {} func (x *AuthorizeInteractionResult) 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 { @@ -1510,7 +1606,7 @@ func (x *AuthorizeInteractionResult) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizeInteractionResult.ProtoReflect.Descriptor instead. func (*AuthorizeInteractionResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{25} + return file_spis_proto_rawDescGZIP(), []int{27} } func (x *AuthorizeInteractionResult) GetUri() string { @@ -1540,7 +1636,7 @@ type GetFollowersRequest struct { func (x *GetFollowersRequest) Reset() { *x = GetFollowersRequest{} 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) } @@ -1553,7 +1649,7 @@ func (x *GetFollowersRequest) String() string { func (*GetFollowersRequest) ProtoMessage() {} func (x *GetFollowersRequest) 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 { @@ -1566,7 +1662,7 @@ func (x *GetFollowersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFollowersRequest.ProtoReflect.Descriptor instead. func (*GetFollowersRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{26} + return file_spis_proto_rawDescGZIP(), []int{28} } func (x *GetFollowersRequest) GetUsername() string { @@ -1592,7 +1688,7 @@ type GetFollowersResult struct { func (x *GetFollowersResult) Reset() { *x = GetFollowersResult{} 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) } @@ -1605,7 +1701,7 @@ func (x *GetFollowersResult) String() string { func (*GetFollowersResult) ProtoMessage() {} func (x *GetFollowersResult) 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 { @@ -1618,7 +1714,7 @@ func (x *GetFollowersResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFollowersResult.ProtoReflect.Descriptor instead. func (*GetFollowersResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{27} + return file_spis_proto_rawDescGZIP(), []int{29} } func (x *GetFollowersResult) GetContext() string { @@ -1676,7 +1772,7 @@ type GetFollowingRequest struct { func (x *GetFollowingRequest) Reset() { *x = GetFollowingRequest{} 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) } @@ -1689,7 +1785,7 @@ func (x *GetFollowingRequest) String() string { func (*GetFollowingRequest) ProtoMessage() {} func (x *GetFollowingRequest) 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 { @@ -1702,7 +1798,7 @@ func (x *GetFollowingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFollowingRequest.ProtoReflect.Descriptor instead. func (*GetFollowingRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{28} + return file_spis_proto_rawDescGZIP(), []int{30} } func (x *GetFollowingRequest) GetUsername() string { @@ -1728,7 +1824,7 @@ type GetFollowingResult struct { func (x *GetFollowingResult) Reset() { *x = GetFollowingResult{} 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) } @@ -1741,7 +1837,7 @@ func (x *GetFollowingResult) String() string { func (*GetFollowingResult) ProtoMessage() {} func (x *GetFollowingResult) 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 { @@ -1754,7 +1850,7 @@ func (x *GetFollowingResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFollowingResult.ProtoReflect.Descriptor instead. func (*GetFollowingResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{29} + return file_spis_proto_rawDescGZIP(), []int{31} } func (x *GetFollowingResult) GetContext() string { @@ -1813,7 +1909,7 @@ type PostToOutboxRequest struct { func (x *PostToOutboxRequest) Reset() { *x = PostToOutboxRequest{} 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) } @@ -1826,7 +1922,7 @@ func (x *PostToOutboxRequest) String() string { func (*PostToOutboxRequest) ProtoMessage() {} func (x *PostToOutboxRequest) 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 { @@ -1839,7 +1935,7 @@ func (x *PostToOutboxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PostToOutboxRequest.ProtoReflect.Descriptor instead. func (*PostToOutboxRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{30} + return file_spis_proto_rawDescGZIP(), []int{32} } func (x *PostToOutboxRequest) GetUsername() string { @@ -1867,7 +1963,7 @@ type PostToOutboxResult struct { func (x *PostToOutboxResult) Reset() { *x = PostToOutboxResult{} 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) } @@ -1880,7 +1976,7 @@ func (x *PostToOutboxResult) String() string { func (*PostToOutboxResult) ProtoMessage() {} func (x *PostToOutboxResult) 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 { @@ -1893,7 +1989,7 @@ func (x *PostToOutboxResult) ProtoReflect() protoreflect.Message { // Deprecated: Use PostToOutboxResult.ProtoReflect.Descriptor instead. func (*PostToOutboxResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{31} + return file_spis_proto_rawDescGZIP(), []int{33} } func (x *PostToOutboxResult) GetBody() []byte { @@ -1916,7 +2012,7 @@ type GetOutboxRequest struct { func (x *GetOutboxRequest) Reset() { *x = GetOutboxRequest{} 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) } @@ -1929,7 +2025,7 @@ func (x *GetOutboxRequest) String() string { func (*GetOutboxRequest) ProtoMessage() {} func (x *GetOutboxRequest) 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 { @@ -1942,7 +2038,7 @@ func (x *GetOutboxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOutboxRequest.ProtoReflect.Descriptor instead. func (*GetOutboxRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{32} + return file_spis_proto_rawDescGZIP(), []int{34} } func (x *GetOutboxRequest) GetUsername() string { @@ -1968,7 +2064,7 @@ type GetOutboxResult struct { func (x *GetOutboxResult) Reset() { *x = GetOutboxResult{} 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) } @@ -1981,7 +2077,7 @@ func (x *GetOutboxResult) String() string { func (*GetOutboxResult) ProtoMessage() {} func (x *GetOutboxResult) 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 { @@ -1994,7 +2090,7 @@ func (x *GetOutboxResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOutboxResult.ProtoReflect.Descriptor instead. func (*GetOutboxResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{33} + return file_spis_proto_rawDescGZIP(), []int{35} } func (x *GetOutboxResult) GetContext() string { @@ -2053,7 +2149,7 @@ type PostToInboxRequest struct { func (x *PostToInboxRequest) Reset() { *x = PostToInboxRequest{} 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) } @@ -2066,7 +2162,7 @@ func (x *PostToInboxRequest) String() string { func (*PostToInboxRequest) ProtoMessage() {} func (x *PostToInboxRequest) 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 { @@ -2079,7 +2175,7 @@ func (x *PostToInboxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PostToInboxRequest.ProtoReflect.Descriptor instead. func (*PostToInboxRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{34} + return file_spis_proto_rawDescGZIP(), []int{36} } func (x *PostToInboxRequest) GetUsername() string { @@ -2107,7 +2203,7 @@ type PostToInboxResult struct { func (x *PostToInboxResult) Reset() { *x = PostToInboxResult{} 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) } @@ -2120,7 +2216,7 @@ func (x *PostToInboxResult) String() string { func (*PostToInboxResult) ProtoMessage() {} func (x *PostToInboxResult) 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 { @@ -2133,7 +2229,7 @@ func (x *PostToInboxResult) ProtoReflect() protoreflect.Message { // Deprecated: Use PostToInboxResult.ProtoReflect.Descriptor instead. func (*PostToInboxResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{35} + return file_spis_proto_rawDescGZIP(), []int{37} } func (x *PostToInboxResult) GetBody() []byte { @@ -2156,7 +2252,7 @@ type GetInboxRequest struct { func (x *GetInboxRequest) Reset() { *x = GetInboxRequest{} 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) } @@ -2169,7 +2265,7 @@ func (x *GetInboxRequest) String() string { func (*GetInboxRequest) ProtoMessage() {} func (x *GetInboxRequest) 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 { @@ -2182,7 +2278,7 @@ func (x *GetInboxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInboxRequest.ProtoReflect.Descriptor instead. func (*GetInboxRequest) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{36} + return file_spis_proto_rawDescGZIP(), []int{38} } func (x *GetInboxRequest) GetUsername() string { @@ -2208,7 +2304,7 @@ type GetInboxResult struct { func (x *GetInboxResult) Reset() { *x = GetInboxResult{} 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) } @@ -2221,7 +2317,7 @@ func (x *GetInboxResult) String() string { func (*GetInboxResult) ProtoMessage() {} func (x *GetInboxResult) 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 { @@ -2234,7 +2330,7 @@ func (x *GetInboxResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInboxResult.ProtoReflect.Descriptor instead. func (*GetInboxResult) Descriptor() ([]byte, []int) { - return file_spis_proto_rawDescGZIP(), []int{37} + return file_spis_proto_rawDescGZIP(), []int{39} } func (x *GetInboxResult) GetContext() string { @@ -2296,205 +2392,213 @@ var file_spis_proto_rawDesc = []byte{ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, 0x6f, 0x63, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x5d, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x52, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3e, 0x0a, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 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, 0x43, 0x0a, 0x1f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x41, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, + 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x5d, 0x0a, 0x0d, 0x53, 0x69, + 0x67, 0x6e, 0x75, 0x70, 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, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x38, 0x0a, 0x0c, 0x53, 0x69, 0x67, + 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, + 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, 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, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x22, 0x38, 0x0a, 0x0c, 0x53, 0x69, 0x67, 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, 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, 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, + 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, 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, + 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, 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, + 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 ( @@ -2509,61 +2613,63 @@ func file_spis_proto_rawDescGZIP() []byte { return file_spis_proto_rawDescData } -var file_spis_proto_msgTypes = make([]protoimpl.MessageInfo, 38) +var file_spis_proto_msgTypes = make([]protoimpl.MessageInfo, 40) var file_spis_proto_goTypes = []interface{}{ - (*SystemCallRequest)(nil), // 0: protobuf.SystemCallRequest - (*SystemCallResult)(nil), // 1: protobuf.SystemCallResult - (*EchoRequest)(nil), // 2: protobuf.EchoRequest - (*EchoResult)(nil), // 3: protobuf.EchoResult - (*SignupRequest)(nil), // 4: protobuf.SignupRequest - (*SignupResult)(nil), // 5: protobuf.SignupResult - (*VerifyRequest)(nil), // 6: protobuf.VerifyRequest - (*VerifyResult)(nil), // 7: protobuf.VerifyResult - (*LoginRequest)(nil), // 8: protobuf.LoginRequest - (*LoginResult)(nil), // 9: protobuf.LoginResult - (*GetProfileByUserRequest)(nil), // 10: protobuf.GetProfileByUserRequest - (*GetProfileByUserResult)(nil), // 11: protobuf.GetProfileByUserResult - (*UpdateProfileByUserRequest)(nil), // 12: protobuf.UpdateProfileByUserRequest - (*UpdateProfileByUserResult)(nil), // 13: protobuf.UpdateProfileByUserResult - (*LogoutRequest)(nil), // 14: protobuf.LogoutRequest - (*LogoutResult)(nil), // 15: protobuf.LogoutResult - (*WebfingerRequest)(nil), // 16: protobuf.WebfingerRequest - (*WebfingerResult)(nil), // 17: protobuf.WebfingerResult - (*GetPackagesRequest)(nil), // 18: protobuf.GetPackagesRequest - (*GetPackagesResult)(nil), // 19: protobuf.GetPackagesResult - (*GetActorRequest)(nil), // 20: protobuf.GetActorRequest - (*GetActorResult)(nil), // 21: protobuf.GetActorResult - (*FollowActorRequest)(nil), // 22: protobuf.FollowActorRequest - (*FollowActorResult)(nil), // 23: protobuf.FollowActorResult - (*AuthorizeInteractionRequest)(nil), // 24: protobuf.AuthorizeInteractionRequest - (*AuthorizeInteractionResult)(nil), // 25: protobuf.AuthorizeInteractionResult - (*GetFollowersRequest)(nil), // 26: protobuf.GetFollowersRequest - (*GetFollowersResult)(nil), // 27: protobuf.GetFollowersResult - (*GetFollowingRequest)(nil), // 28: protobuf.GetFollowingRequest - (*GetFollowingResult)(nil), // 29: protobuf.GetFollowingResult - (*PostToOutboxRequest)(nil), // 30: protobuf.PostToOutboxRequest - (*PostToOutboxResult)(nil), // 31: protobuf.PostToOutboxResult - (*GetOutboxRequest)(nil), // 32: protobuf.GetOutboxRequest - (*GetOutboxResult)(nil), // 33: protobuf.GetOutboxResult - (*PostToInboxRequest)(nil), // 34: protobuf.PostToInboxRequest - (*PostToInboxResult)(nil), // 35: protobuf.PostToInboxResult - (*GetInboxRequest)(nil), // 36: protobuf.GetInboxRequest - (*GetInboxResult)(nil), // 37: protobuf.GetInboxResult - (*Document)(nil), // 38: protobuf.Document - (*ActivityPubLink)(nil), // 39: protobuf.ActivityPubLink - (*ActivityPubMedia)(nil), // 40: protobuf.ActivityPubMedia - (*ActivityPubPublicKey)(nil), // 41: protobuf.ActivityPubPublicKey - (*ActivityPubActivity)(nil), // 42: protobuf.ActivityPubActivity + (*SystemCallRequest)(nil), // 0: protobuf.SystemCallRequest + (*SystemCallResult)(nil), // 1: protobuf.SystemCallResult + (*EchoRequest)(nil), // 2: protobuf.EchoRequest + (*EchoResult)(nil), // 3: protobuf.EchoResult + (*CheckUsernameAvailabilityRequest)(nil), // 4: protobuf.CheckUsernameAvailabilityRequest + (*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 + (*LogoutRequest)(nil), // 16: protobuf.LogoutRequest + (*LogoutResult)(nil), // 17: protobuf.LogoutResult + (*WebfingerRequest)(nil), // 18: protobuf.WebfingerRequest + (*WebfingerResult)(nil), // 19: protobuf.WebfingerResult + (*GetPackagesRequest)(nil), // 20: protobuf.GetPackagesRequest + (*GetPackagesResult)(nil), // 21: protobuf.GetPackagesResult + (*GetActorRequest)(nil), // 22: protobuf.GetActorRequest + (*GetActorResult)(nil), // 23: protobuf.GetActorResult + (*FollowActorRequest)(nil), // 24: protobuf.FollowActorRequest + (*FollowActorResult)(nil), // 25: protobuf.FollowActorResult + (*AuthorizeInteractionRequest)(nil), // 26: protobuf.AuthorizeInteractionRequest + (*AuthorizeInteractionResult)(nil), // 27: protobuf.AuthorizeInteractionResult + (*GetFollowersRequest)(nil), // 28: protobuf.GetFollowersRequest + (*GetFollowersResult)(nil), // 29: protobuf.GetFollowersResult + (*GetFollowingRequest)(nil), // 30: protobuf.GetFollowingRequest + (*GetFollowingResult)(nil), // 31: protobuf.GetFollowingResult + (*PostToOutboxRequest)(nil), // 32: protobuf.PostToOutboxRequest + (*PostToOutboxResult)(nil), // 33: protobuf.PostToOutboxResult + (*GetOutboxRequest)(nil), // 34: protobuf.GetOutboxRequest + (*GetOutboxResult)(nil), // 35: protobuf.GetOutboxResult + (*PostToInboxRequest)(nil), // 36: protobuf.PostToInboxRequest + (*PostToInboxResult)(nil), // 37: protobuf.PostToInboxResult + (*GetInboxRequest)(nil), // 38: protobuf.GetInboxRequest + (*GetInboxResult)(nil), // 39: protobuf.GetInboxResult + (*Document)(nil), // 40: protobuf.Document + (*ActivityPubLink)(nil), // 41: protobuf.ActivityPubLink + (*ActivityPubMedia)(nil), // 42: protobuf.ActivityPubMedia + (*ActivityPubPublicKey)(nil), // 43: protobuf.ActivityPubPublicKey + (*ActivityPubActivity)(nil), // 44: protobuf.ActivityPubActivity } var file_spis_proto_depIdxs = []int32{ - 38, // 0: protobuf.EchoRequest.document:type_name -> protobuf.Document - 38, // 1: protobuf.EchoResult.document:type_name -> protobuf.Document - 39, // 2: protobuf.WebfingerResult.links:type_name -> protobuf.ActivityPubLink - 40, // 3: protobuf.GetActorResult.icon:type_name -> protobuf.ActivityPubMedia - 40, // 4: protobuf.GetActorResult.image:type_name -> protobuf.ActivityPubMedia - 41, // 5: protobuf.GetActorResult.publicKey:type_name -> protobuf.ActivityPubPublicKey - 42, // 6: protobuf.GetOutboxResult.orderedItems:type_name -> protobuf.ActivityPubActivity - 42, // 7: protobuf.GetInboxResult.orderedItems:type_name -> protobuf.ActivityPubActivity + 40, // 0: protobuf.EchoRequest.document:type_name -> protobuf.Document + 40, // 1: protobuf.EchoResult.document:type_name -> protobuf.Document + 41, // 2: protobuf.WebfingerResult.links:type_name -> protobuf.ActivityPubLink + 42, // 3: protobuf.GetActorResult.icon:type_name -> protobuf.ActivityPubMedia + 42, // 4: protobuf.GetActorResult.image:type_name -> protobuf.ActivityPubMedia + 43, // 5: protobuf.GetActorResult.publicKey:type_name -> protobuf.ActivityPubPublicKey + 44, // 6: protobuf.GetOutboxResult.orderedItems:type_name -> protobuf.ActivityPubActivity + 44, // 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 @@ -2627,7 +2733,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignupRequest); i { + switch v := v.(*CheckUsernameAvailabilityRequest); i { case 0: return &v.state case 1: @@ -2639,7 +2745,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignupResult); i { + switch v := v.(*CheckUsernameAvailabilityResult); i { case 0: return &v.state case 1: @@ -2651,7 +2757,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyRequest); i { + switch v := v.(*SignupRequest); i { case 0: return &v.state case 1: @@ -2663,7 +2769,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyResult); i { + switch v := v.(*SignupResult); i { case 0: return &v.state case 1: @@ -2675,7 +2781,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginRequest); i { + switch v := v.(*VerifyRequest); i { case 0: return &v.state case 1: @@ -2687,7 +2793,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginResult); i { + switch v := v.(*VerifyResult); i { case 0: return &v.state case 1: @@ -2699,7 +2805,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetProfileByUserRequest); i { + switch v := v.(*LoginRequest); i { case 0: return &v.state case 1: @@ -2711,7 +2817,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetProfileByUserResult); i { + switch v := v.(*LoginResult); i { case 0: return &v.state case 1: @@ -2723,7 +2829,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProfileByUserRequest); i { + switch v := v.(*GetProfileByUserRequest); i { case 0: return &v.state case 1: @@ -2735,7 +2841,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateProfileByUserResult); i { + switch v := v.(*GetProfileByUserResult); i { case 0: return &v.state case 1: @@ -2747,7 +2853,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogoutRequest); i { + switch v := v.(*UpdateProfileByUserRequest); i { case 0: return &v.state case 1: @@ -2759,7 +2865,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogoutResult); i { + switch v := v.(*UpdateProfileByUserResult); i { case 0: return &v.state case 1: @@ -2771,7 +2877,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebfingerRequest); i { + switch v := v.(*LogoutRequest); i { case 0: return &v.state case 1: @@ -2783,7 +2889,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebfingerResult); i { + switch v := v.(*LogoutResult); i { case 0: return &v.state case 1: @@ -2795,7 +2901,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPackagesRequest); i { + switch v := v.(*WebfingerRequest); i { case 0: return &v.state case 1: @@ -2807,7 +2913,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPackagesResult); i { + switch v := v.(*WebfingerResult); i { case 0: return &v.state case 1: @@ -2819,7 +2925,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetActorRequest); i { + switch v := v.(*GetPackagesRequest); i { case 0: return &v.state case 1: @@ -2831,7 +2937,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetActorResult); i { + switch v := v.(*GetPackagesResult); i { case 0: return &v.state case 1: @@ -2843,7 +2949,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FollowActorRequest); i { + switch v := v.(*GetActorRequest); i { case 0: return &v.state case 1: @@ -2855,7 +2961,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FollowActorResult); i { + switch v := v.(*GetActorResult); i { case 0: return &v.state case 1: @@ -2867,7 +2973,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuthorizeInteractionRequest); i { + switch v := v.(*FollowActorRequest); i { case 0: return &v.state case 1: @@ -2879,7 +2985,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuthorizeInteractionResult); i { + switch v := v.(*FollowActorResult); i { case 0: return &v.state case 1: @@ -2891,7 +2997,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFollowersRequest); i { + switch v := v.(*AuthorizeInteractionRequest); i { case 0: return &v.state case 1: @@ -2903,7 +3009,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFollowersResult); i { + switch v := v.(*AuthorizeInteractionResult); i { case 0: return &v.state case 1: @@ -2915,7 +3021,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFollowingRequest); i { + switch v := v.(*GetFollowersRequest); i { case 0: return &v.state case 1: @@ -2927,7 +3033,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFollowingResult); i { + switch v := v.(*GetFollowersResult); i { case 0: return &v.state case 1: @@ -2939,7 +3045,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostToOutboxRequest); i { + switch v := v.(*GetFollowingRequest); i { case 0: return &v.state case 1: @@ -2951,7 +3057,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostToOutboxResult); i { + switch v := v.(*GetFollowingResult); i { case 0: return &v.state case 1: @@ -2963,7 +3069,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOutboxRequest); i { + switch v := v.(*PostToOutboxRequest); i { case 0: return &v.state case 1: @@ -2975,7 +3081,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOutboxResult); i { + switch v := v.(*PostToOutboxResult); i { case 0: return &v.state case 1: @@ -2987,7 +3093,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostToInboxRequest); i { + switch v := v.(*GetOutboxRequest); i { case 0: return &v.state case 1: @@ -2999,7 +3105,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostToInboxResult); i { + switch v := v.(*GetOutboxResult); i { case 0: return &v.state case 1: @@ -3011,7 +3117,7 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInboxRequest); i { + switch v := v.(*PostToInboxRequest); i { case 0: return &v.state case 1: @@ -3023,6 +3129,30 @@ func file_spis_proto_init() { } } file_spis_proto_msgTypes[37].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[38].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[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetInboxResult); i { case 0: return &v.state @@ -3041,7 +3171,7 @@ func file_spis_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_spis_proto_rawDesc, NumEnums: 0, - NumMessages: 38, + NumMessages: 40, NumExtensions: 0, NumServices: 0, }, diff --git a/components/api/protobuf/spis.proto b/components/api/protobuf/spis.proto index b1d89ae..9be8b2a 100644 --- a/components/api/protobuf/spis.proto +++ b/components/api/protobuf/spis.proto @@ -25,6 +25,16 @@ message EchoResult { Document document = 0x00000001; } +// API: CheckUsernameAvailability +//----------------------------------------------------------- +message CheckUsernameAvailabilityRequest { + string username = 0x00000001; +} + +message CheckUsernameAvailabilityResult { + bool isAvailable = 0x00000001; +} + // API: Signup //----------------------------------------------------------- message SignupRequest { diff --git a/components/api/services/check_username_availability_service.go b/components/api/services/check_username_availability_service.go new file mode 100644 index 0000000..18e1906 --- /dev/null +++ b/components/api/services/check_username_availability_service.go @@ -0,0 +1,29 @@ +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" +) + +// noinspection GoUnusedParameter +func CheckUsernameAvailabilityService(context IContext, input *CheckUsernameAvailabilityRequest) (result *CheckUsernameAvailabilityResult, err error) { + conductor := core.Conductor + _ = CHECK_USERNAME_AVAILABILITY_REQUEST + + conductor.LogRemoteCall(context, INITIALIZE, "check_username_availability", input, result, err) + defer func() { conductor.LogRemoteCall(context, FINALIZE, "check_username_availability", input, result, err) }() + + _result, _err := conductor.CheckUsernameAvailability(input.Username, context.Identity()) + if _err != nil { + err = _err + return nil, err + } + + _ = _result + + result = context.ResultContainer().(*CheckUsernameAvailabilityResult) + result.IsAvailable = _result.IsAvailable() + return result, nil +} diff --git a/components/constants/errors.go b/components/constants/errors.go index a527c73..1536358 100644 --- a/components/constants/errors.go +++ b/components/constants/errors.go @@ -8,54 +8,56 @@ const ENABLE_CUSTOM_ERRORS = true // noinspection GoSnakeCaseUsage const ( // SYSTEM_ERRORS - ERROR_MESSAGE_INITIALIZE = "ERROR_MESSAGE_INITIALIZE" - ERROR_MESSAGE_NOT_IMPLEMENTED = "ERROR_MESSAGE_NOT_IMPLEMENTED" - ERROR_MESSAGE_OPERATION_FAILED = "ERROR_MESSAGE_OPERATION_FAILED" - ERROR_MESSAGE_OPERATION_NOT_SUPPORTED = "ERROR_MESSAGE_OPERATION_NOT_SUPPORTED" - ERROR_MESSAGE_UNRESOLVED_DEPENDENCIES = "ERROR_MESSAGE_UNRESOLVED_DEPENDENCIES" - ERROR_MESSAGE_SYSTEM_COMPONENT_NOT_FOUND = "ERROR_MESSAGE_SYSTEM_COMPONENT_NOT_FOUND" - ERROR_MESSAGE_DOCUMENT_NOT_FOUND = "ERROR_MESSAGE_DOCUMENT_NOT_FOUND" - ERROR_MESSAGE_SYSTEM_SCHEDULE_NOT_FOUND = "ERROR_MESSAGE_SYSTEM_SCHEDULE_NOT_FOUND" - ERROR_MESSAGE_IDENTITY_NOT_FOUND = "ERROR_MESSAGE_IDENTITY_NOT_FOUND" - ERROR_MESSAGE_ACCESS_CONTROL_NOT_FOUND = "ERROR_MESSAGE_ACCESS_CONTROL_NOT_FOUND" - ERROR_MESSAGE_REMOTE_ACTIVITY_NOT_FOUND = "ERROR_MESSAGE_REMOTE_ACTIVITY_NOT_FOUND" - ERROR_MESSAGE_CATEGORY_TYPE_NOT_FOUND = "ERROR_MESSAGE_CATEGORY_TYPE_NOT_FOUND" - ERROR_MESSAGE_CATEGORY_NOT_FOUND = "ERROR_MESSAGE_CATEGORY_NOT_FOUND" - ERROR_MESSAGE_USER_NOT_FOUND = "ERROR_MESSAGE_USER_NOT_FOUND" - ERROR_MESSAGE_ACTIVITY_PUB_OBJECT_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_OBJECT_NOT_FOUND" - ERROR_MESSAGE_ACTIVITY_PUB_ACTIVITY_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_ACTIVITY_NOT_FOUND" - ERROR_MESSAGE_ACTIVITY_PUB_PUBLIC_KEY_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_PUBLIC_KEY_NOT_FOUND" - ERROR_MESSAGE_ACTIVITY_PUB_LINK_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_LINK_NOT_FOUND" - ERROR_MESSAGE_ACTIVITY_PUB_MEDIA_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_MEDIA_NOT_FOUND" - ERROR_MESSAGE_ACTIVITY_PUB_INCOMING_ACTIVITY_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_INCOMING_ACTIVITY_NOT_FOUND" - ERROR_MESSAGE_ACTIVITY_PUB_OUTGOING_ACTIVITY_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_OUTGOING_ACTIVITY_NOT_FOUND" - ERROR_MESSAGE_ACTIVITY_PUB_FOLLOWER_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_FOLLOWER_NOT_FOUND" - ERROR_MESSAGE_SPI_NOT_FOUND = "ERROR_MESSAGE_SPI_NOT_FOUND" - ERROR_MESSAGE_UNKNOWN_DOCUMENT = "ERROR_MESSAGE_UNKNOWN_DOCUMENT" - ERROR_MESSAGE_UNKNOWN_SYSTEM_SCHEDULE = "ERROR_MESSAGE_UNKNOWN_SYSTEM_SCHEDULE" - ERROR_MESSAGE_UNKNOWN_IDENTITY = "ERROR_MESSAGE_UNKNOWN_IDENTITY" - ERROR_MESSAGE_UNKNOWN_ACCESS_CONTROL = "ERROR_MESSAGE_UNKNOWN_ACCESS_CONTROL" - ERROR_MESSAGE_UNKNOWN_REMOTE_ACTIVITY = "ERROR_MESSAGE_UNKNOWN_REMOTE_ACTIVITY" - ERROR_MESSAGE_UNKNOWN_CATEGORY_TYPE = "ERROR_MESSAGE_UNKNOWN_CATEGORY_TYPE" - ERROR_MESSAGE_UNKNOWN_CATEGORY = "ERROR_MESSAGE_UNKNOWN_CATEGORY" - ERROR_MESSAGE_UNKNOWN_USER = "ERROR_MESSAGE_UNKNOWN_USER" - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OBJECT = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OBJECT" - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_ACTIVITY = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_ACTIVITY" - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_PUBLIC_KEY = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_PUBLIC_KEY" - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_LINK = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_LINK" - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_MEDIA = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_MEDIA" - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_INCOMING_ACTIVITY = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_INCOMING_ACTIVITY" - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OUTGOING_ACTIVITY = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OUTGOING_ACTIVITY" - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_FOLLOWER = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_FOLLOWER" - ERROR_MESSAGE_UNKNOWN_SPI = "ERROR_MESSAGE_UNKNOWN_SPI" - ERROR_MESSAGE_INVALID_ID = "ERROR_MESSAGE_INVALID_ID" - ERROR_MESSAGE_INVALID_PARAMETERS = "ERROR_MESSAGE_INVALID_PARAMETERS" - 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_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" - ERROR_MESSAGE_INVALID_RESOURCE_FOR_WEBFINGER = "ERROR_MESSAGE_INVALID_RESOURCE_FOR_WEBFINGER" + ERROR_MESSAGE_INITIALIZE = "ERROR_MESSAGE_INITIALIZE" + ERROR_MESSAGE_NOT_IMPLEMENTED = "ERROR_MESSAGE_NOT_IMPLEMENTED" + ERROR_MESSAGE_OPERATION_FAILED = "ERROR_MESSAGE_OPERATION_FAILED" + ERROR_MESSAGE_OPERATION_NOT_SUPPORTED = "ERROR_MESSAGE_OPERATION_NOT_SUPPORTED" + ERROR_MESSAGE_UNRESOLVED_DEPENDENCIES = "ERROR_MESSAGE_UNRESOLVED_DEPENDENCIES" + ERROR_MESSAGE_SYSTEM_COMPONENT_NOT_FOUND = "ERROR_MESSAGE_SYSTEM_COMPONENT_NOT_FOUND" + ERROR_MESSAGE_DOCUMENT_NOT_FOUND = "ERROR_MESSAGE_DOCUMENT_NOT_FOUND" + ERROR_MESSAGE_SYSTEM_SCHEDULE_NOT_FOUND = "ERROR_MESSAGE_SYSTEM_SCHEDULE_NOT_FOUND" + ERROR_MESSAGE_IDENTITY_NOT_FOUND = "ERROR_MESSAGE_IDENTITY_NOT_FOUND" + ERROR_MESSAGE_ACCESS_CONTROL_NOT_FOUND = "ERROR_MESSAGE_ACCESS_CONTROL_NOT_FOUND" + ERROR_MESSAGE_REMOTE_ACTIVITY_NOT_FOUND = "ERROR_MESSAGE_REMOTE_ACTIVITY_NOT_FOUND" + ERROR_MESSAGE_CATEGORY_TYPE_NOT_FOUND = "ERROR_MESSAGE_CATEGORY_TYPE_NOT_FOUND" + ERROR_MESSAGE_CATEGORY_NOT_FOUND = "ERROR_MESSAGE_CATEGORY_NOT_FOUND" + ERROR_MESSAGE_USER_NOT_FOUND = "ERROR_MESSAGE_USER_NOT_FOUND" + ERROR_MESSAGE_ACTIVITY_PUB_OBJECT_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_OBJECT_NOT_FOUND" + ERROR_MESSAGE_ACTIVITY_PUB_ACTIVITY_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_ACTIVITY_NOT_FOUND" + ERROR_MESSAGE_ACTIVITY_PUB_PUBLIC_KEY_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_PUBLIC_KEY_NOT_FOUND" + ERROR_MESSAGE_ACTIVITY_PUB_LINK_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_LINK_NOT_FOUND" + ERROR_MESSAGE_ACTIVITY_PUB_MEDIA_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_MEDIA_NOT_FOUND" + ERROR_MESSAGE_ACTIVITY_PUB_INCOMING_ACTIVITY_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_INCOMING_ACTIVITY_NOT_FOUND" + ERROR_MESSAGE_ACTIVITY_PUB_OUTGOING_ACTIVITY_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_OUTGOING_ACTIVITY_NOT_FOUND" + ERROR_MESSAGE_ACTIVITY_PUB_FOLLOWER_NOT_FOUND = "ERROR_MESSAGE_ACTIVITY_PUB_FOLLOWER_NOT_FOUND" + ERROR_MESSAGE_SPI_NOT_FOUND = "ERROR_MESSAGE_SPI_NOT_FOUND" + ERROR_MESSAGE_UNKNOWN_DOCUMENT = "ERROR_MESSAGE_UNKNOWN_DOCUMENT" + ERROR_MESSAGE_UNKNOWN_SYSTEM_SCHEDULE = "ERROR_MESSAGE_UNKNOWN_SYSTEM_SCHEDULE" + ERROR_MESSAGE_UNKNOWN_IDENTITY = "ERROR_MESSAGE_UNKNOWN_IDENTITY" + ERROR_MESSAGE_UNKNOWN_ACCESS_CONTROL = "ERROR_MESSAGE_UNKNOWN_ACCESS_CONTROL" + ERROR_MESSAGE_UNKNOWN_REMOTE_ACTIVITY = "ERROR_MESSAGE_UNKNOWN_REMOTE_ACTIVITY" + ERROR_MESSAGE_UNKNOWN_CATEGORY_TYPE = "ERROR_MESSAGE_UNKNOWN_CATEGORY_TYPE" + ERROR_MESSAGE_UNKNOWN_CATEGORY = "ERROR_MESSAGE_UNKNOWN_CATEGORY" + ERROR_MESSAGE_UNKNOWN_USER = "ERROR_MESSAGE_UNKNOWN_USER" + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OBJECT = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OBJECT" + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_ACTIVITY = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_ACTIVITY" + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_PUBLIC_KEY = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_PUBLIC_KEY" + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_LINK = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_LINK" + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_MEDIA = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_MEDIA" + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_INCOMING_ACTIVITY = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_INCOMING_ACTIVITY" + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OUTGOING_ACTIVITY = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OUTGOING_ACTIVITY" + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_FOLLOWER = "ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_FOLLOWER" + ERROR_MESSAGE_UNKNOWN_SPI = "ERROR_MESSAGE_UNKNOWN_SPI" + ERROR_MESSAGE_INVALID_ID = "ERROR_MESSAGE_INVALID_ID" + ERROR_MESSAGE_INVALID_PARAMETERS = "ERROR_MESSAGE_INVALID_PARAMETERS" + ERROR_MESSAGE_INVALID_USERNAME_FOR_CHECK_USERNAME_AVAILABILITY = "ERROR_MESSAGE_INVALID_USERNAME_FOR_CHECK_USERNAME_AVAILABILITY" + 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_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" + ERROR_MESSAGE_INVALID_RESOURCE_FOR_WEBFINGER = "ERROR_MESSAGE_INVALID_RESOURCE_FOR_WEBFINGER" // CUSTOM_ERRORS ERROR_MESSAGE_DATA_INTEGRITY_VIOLATION = "ERROR_MESSAGE_DATA_INTEGRITY_VIOLATION" ERROR_MESSAGE_INVALID_STATE = "ERROR_MESSAGE_INVALID_STATE" @@ -73,54 +75,56 @@ const ( // noinspection GoSnakeCaseUsage,GoUnusedGlobalVariable var ( // SYSTEM_ERRORS - ERROR_INITIALIZE = errors.New(ERROR_MESSAGE_INITIALIZE) - ERROR_NOT_IMPLEMENTED = errors.New(ERROR_MESSAGE_NOT_IMPLEMENTED) - ERROR_OPERATION_FAILED = errors.New(ERROR_MESSAGE_OPERATION_FAILED) - ERROR_OPERATION_NOT_SUPPORTED = errors.New(ERROR_MESSAGE_OPERATION_NOT_SUPPORTED) - ERROR_UNRESOLVED_DEPENDENCIES = errors.New(ERROR_MESSAGE_UNRESOLVED_DEPENDENCIES) - ERROR_SYSTEM_COMPONENT_NOT_FOUND = errors.New(ERROR_MESSAGE_SYSTEM_COMPONENT_NOT_FOUND) - ERROR_DOCUMENT_NOT_FOUND = errors.New(ERROR_MESSAGE_DOCUMENT_NOT_FOUND) - ERROR_SYSTEM_SCHEDULE_NOT_FOUND = errors.New(ERROR_MESSAGE_SYSTEM_SCHEDULE_NOT_FOUND) - ERROR_IDENTITY_NOT_FOUND = errors.New(ERROR_MESSAGE_IDENTITY_NOT_FOUND) - ERROR_ACCESS_CONTROL_NOT_FOUND = errors.New(ERROR_MESSAGE_ACCESS_CONTROL_NOT_FOUND) - ERROR_REMOTE_ACTIVITY_NOT_FOUND = errors.New(ERROR_MESSAGE_REMOTE_ACTIVITY_NOT_FOUND) - ERROR_CATEGORY_TYPE_NOT_FOUND = errors.New(ERROR_MESSAGE_CATEGORY_TYPE_NOT_FOUND) - ERROR_CATEGORY_NOT_FOUND = errors.New(ERROR_MESSAGE_CATEGORY_NOT_FOUND) - ERROR_USER_NOT_FOUND = errors.New(ERROR_MESSAGE_USER_NOT_FOUND) - ERROR_ACTIVITY_PUB_OBJECT_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_OBJECT_NOT_FOUND) - ERROR_ACTIVITY_PUB_ACTIVITY_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_ACTIVITY_NOT_FOUND) - ERROR_ACTIVITY_PUB_PUBLIC_KEY_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_PUBLIC_KEY_NOT_FOUND) - ERROR_ACTIVITY_PUB_LINK_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_LINK_NOT_FOUND) - ERROR_ACTIVITY_PUB_MEDIA_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_MEDIA_NOT_FOUND) - ERROR_ACTIVITY_PUB_INCOMING_ACTIVITY_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_INCOMING_ACTIVITY_NOT_FOUND) - ERROR_ACTIVITY_PUB_OUTGOING_ACTIVITY_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_OUTGOING_ACTIVITY_NOT_FOUND) - ERROR_ACTIVITY_PUB_FOLLOWER_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_FOLLOWER_NOT_FOUND) - ERROR_SPI_NOT_FOUND = errors.New(ERROR_MESSAGE_SPI_NOT_FOUND) - ERROR_UNKNOWN_DOCUMENT = errors.New(ERROR_MESSAGE_UNKNOWN_DOCUMENT) - ERROR_UNKNOWN_SYSTEM_SCHEDULE = errors.New(ERROR_MESSAGE_UNKNOWN_SYSTEM_SCHEDULE) - ERROR_UNKNOWN_IDENTITY = errors.New(ERROR_MESSAGE_UNKNOWN_IDENTITY) - ERROR_UNKNOWN_ACCESS_CONTROL = errors.New(ERROR_MESSAGE_UNKNOWN_ACCESS_CONTROL) - ERROR_UNKNOWN_REMOTE_ACTIVITY = errors.New(ERROR_MESSAGE_UNKNOWN_REMOTE_ACTIVITY) - ERROR_UNKNOWN_CATEGORY_TYPE = errors.New(ERROR_MESSAGE_UNKNOWN_CATEGORY_TYPE) - ERROR_UNKNOWN_CATEGORY = errors.New(ERROR_MESSAGE_UNKNOWN_CATEGORY) - ERROR_UNKNOWN_USER = errors.New(ERROR_MESSAGE_UNKNOWN_USER) - ERROR_UNKNOWN_ACTIVITY_PUB_OBJECT = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OBJECT) - ERROR_UNKNOWN_ACTIVITY_PUB_ACTIVITY = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_ACTIVITY) - ERROR_UNKNOWN_ACTIVITY_PUB_PUBLIC_KEY = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_PUBLIC_KEY) - ERROR_UNKNOWN_ACTIVITY_PUB_LINK = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_LINK) - ERROR_UNKNOWN_ACTIVITY_PUB_MEDIA = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_MEDIA) - ERROR_UNKNOWN_ACTIVITY_PUB_INCOMING_ACTIVITY = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_INCOMING_ACTIVITY) - ERROR_UNKNOWN_ACTIVITY_PUB_OUTGOING_ACTIVITY = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OUTGOING_ACTIVITY) - ERROR_UNKNOWN_ACTIVITY_PUB_FOLLOWER = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_FOLLOWER) - ERROR_UNKNOWN_SPI = errors.New(ERROR_MESSAGE_UNKNOWN_SPI) - ERROR_INVALID_ID = errors.New(ERROR_MESSAGE_INVALID_ID) - ERROR_INVALID_PARAMETERS = errors.New(ERROR_MESSAGE_INVALID_PARAMETERS) - 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_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) - ERROR_INVALID_RESOURCE_FOR_WEBFINGER = errors.New(ERROR_MESSAGE_INVALID_RESOURCE_FOR_WEBFINGER) + ERROR_INITIALIZE = errors.New(ERROR_MESSAGE_INITIALIZE) + ERROR_NOT_IMPLEMENTED = errors.New(ERROR_MESSAGE_NOT_IMPLEMENTED) + ERROR_OPERATION_FAILED = errors.New(ERROR_MESSAGE_OPERATION_FAILED) + ERROR_OPERATION_NOT_SUPPORTED = errors.New(ERROR_MESSAGE_OPERATION_NOT_SUPPORTED) + ERROR_UNRESOLVED_DEPENDENCIES = errors.New(ERROR_MESSAGE_UNRESOLVED_DEPENDENCIES) + ERROR_SYSTEM_COMPONENT_NOT_FOUND = errors.New(ERROR_MESSAGE_SYSTEM_COMPONENT_NOT_FOUND) + ERROR_DOCUMENT_NOT_FOUND = errors.New(ERROR_MESSAGE_DOCUMENT_NOT_FOUND) + ERROR_SYSTEM_SCHEDULE_NOT_FOUND = errors.New(ERROR_MESSAGE_SYSTEM_SCHEDULE_NOT_FOUND) + ERROR_IDENTITY_NOT_FOUND = errors.New(ERROR_MESSAGE_IDENTITY_NOT_FOUND) + ERROR_ACCESS_CONTROL_NOT_FOUND = errors.New(ERROR_MESSAGE_ACCESS_CONTROL_NOT_FOUND) + ERROR_REMOTE_ACTIVITY_NOT_FOUND = errors.New(ERROR_MESSAGE_REMOTE_ACTIVITY_NOT_FOUND) + ERROR_CATEGORY_TYPE_NOT_FOUND = errors.New(ERROR_MESSAGE_CATEGORY_TYPE_NOT_FOUND) + ERROR_CATEGORY_NOT_FOUND = errors.New(ERROR_MESSAGE_CATEGORY_NOT_FOUND) + ERROR_USER_NOT_FOUND = errors.New(ERROR_MESSAGE_USER_NOT_FOUND) + ERROR_ACTIVITY_PUB_OBJECT_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_OBJECT_NOT_FOUND) + ERROR_ACTIVITY_PUB_ACTIVITY_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_ACTIVITY_NOT_FOUND) + ERROR_ACTIVITY_PUB_PUBLIC_KEY_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_PUBLIC_KEY_NOT_FOUND) + ERROR_ACTIVITY_PUB_LINK_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_LINK_NOT_FOUND) + ERROR_ACTIVITY_PUB_MEDIA_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_MEDIA_NOT_FOUND) + ERROR_ACTIVITY_PUB_INCOMING_ACTIVITY_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_INCOMING_ACTIVITY_NOT_FOUND) + ERROR_ACTIVITY_PUB_OUTGOING_ACTIVITY_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_OUTGOING_ACTIVITY_NOT_FOUND) + ERROR_ACTIVITY_PUB_FOLLOWER_NOT_FOUND = errors.New(ERROR_MESSAGE_ACTIVITY_PUB_FOLLOWER_NOT_FOUND) + ERROR_SPI_NOT_FOUND = errors.New(ERROR_MESSAGE_SPI_NOT_FOUND) + ERROR_UNKNOWN_DOCUMENT = errors.New(ERROR_MESSAGE_UNKNOWN_DOCUMENT) + ERROR_UNKNOWN_SYSTEM_SCHEDULE = errors.New(ERROR_MESSAGE_UNKNOWN_SYSTEM_SCHEDULE) + ERROR_UNKNOWN_IDENTITY = errors.New(ERROR_MESSAGE_UNKNOWN_IDENTITY) + ERROR_UNKNOWN_ACCESS_CONTROL = errors.New(ERROR_MESSAGE_UNKNOWN_ACCESS_CONTROL) + ERROR_UNKNOWN_REMOTE_ACTIVITY = errors.New(ERROR_MESSAGE_UNKNOWN_REMOTE_ACTIVITY) + ERROR_UNKNOWN_CATEGORY_TYPE = errors.New(ERROR_MESSAGE_UNKNOWN_CATEGORY_TYPE) + ERROR_UNKNOWN_CATEGORY = errors.New(ERROR_MESSAGE_UNKNOWN_CATEGORY) + ERROR_UNKNOWN_USER = errors.New(ERROR_MESSAGE_UNKNOWN_USER) + ERROR_UNKNOWN_ACTIVITY_PUB_OBJECT = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OBJECT) + ERROR_UNKNOWN_ACTIVITY_PUB_ACTIVITY = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_ACTIVITY) + ERROR_UNKNOWN_ACTIVITY_PUB_PUBLIC_KEY = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_PUBLIC_KEY) + ERROR_UNKNOWN_ACTIVITY_PUB_LINK = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_LINK) + ERROR_UNKNOWN_ACTIVITY_PUB_MEDIA = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_MEDIA) + ERROR_UNKNOWN_ACTIVITY_PUB_INCOMING_ACTIVITY = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_INCOMING_ACTIVITY) + ERROR_UNKNOWN_ACTIVITY_PUB_OUTGOING_ACTIVITY = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OUTGOING_ACTIVITY) + ERROR_UNKNOWN_ACTIVITY_PUB_FOLLOWER = errors.New(ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_FOLLOWER) + ERROR_UNKNOWN_SPI = errors.New(ERROR_MESSAGE_UNKNOWN_SPI) + ERROR_INVALID_ID = errors.New(ERROR_MESSAGE_INVALID_ID) + ERROR_INVALID_PARAMETERS = errors.New(ERROR_MESSAGE_INVALID_PARAMETERS) + ERROR_INVALID_USERNAME_FOR_CHECK_USERNAME_AVAILABILITY = errors.New(ERROR_MESSAGE_INVALID_USERNAME_FOR_CHECK_USERNAME_AVAILABILITY) + 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_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) + ERROR_INVALID_RESOURCE_FOR_WEBFINGER = errors.New(ERROR_MESSAGE_INVALID_RESOURCE_FOR_WEBFINGER) // CUSTOM_ERRORS ERROR_DATA_INTEGRITY_VIOLATION = errors.New(ERROR_MESSAGE_DATA_INTEGRITY_VIOLATION) ERROR_INVALID_STATE = errors.New(ERROR_MESSAGE_INVALID_STATE) diff --git a/components/constants/resources.en-US.go b/components/constants/resources.en-US.go index 5449ac7..975c261 100644 --- a/components/constants/resources.en-US.go +++ b/components/constants/resources.en-US.go @@ -5,54 +5,56 @@ import . "github.com/xeronith/diamante/contracts/localization" // noinspection GoUnusedGlobalVariable var Errors = Resource{ // SYSTEM_ERRORS - ERROR_MESSAGE_INITIALIZE: "initialize", - ERROR_MESSAGE_NOT_IMPLEMENTED: "not_implemented", - ERROR_MESSAGE_OPERATION_FAILED: "operation_failed", - ERROR_MESSAGE_OPERATION_NOT_SUPPORTED: "operation_not_supported", - ERROR_MESSAGE_UNRESOLVED_DEPENDENCIES: "unresolved_dependencies", - ERROR_MESSAGE_SYSTEM_COMPONENT_NOT_FOUND: "system_component_not_found", - ERROR_MESSAGE_DOCUMENT_NOT_FOUND: "document_not_found", - ERROR_MESSAGE_SYSTEM_SCHEDULE_NOT_FOUND: "system_schedule_not_found", - ERROR_MESSAGE_IDENTITY_NOT_FOUND: "identity_not_found", - ERROR_MESSAGE_ACCESS_CONTROL_NOT_FOUND: "access_control_not_found", - ERROR_MESSAGE_REMOTE_ACTIVITY_NOT_FOUND: "remote_activity_not_found", - ERROR_MESSAGE_CATEGORY_TYPE_NOT_FOUND: "category_type_not_found", - ERROR_MESSAGE_CATEGORY_NOT_FOUND: "category_not_found", - ERROR_MESSAGE_USER_NOT_FOUND: "user_not_found", - ERROR_MESSAGE_ACTIVITY_PUB_OBJECT_NOT_FOUND: "activity_pub_object_not_found", - ERROR_MESSAGE_ACTIVITY_PUB_ACTIVITY_NOT_FOUND: "activity_pub_activity_not_found", - ERROR_MESSAGE_ACTIVITY_PUB_PUBLIC_KEY_NOT_FOUND: "activity_pub_public_key_not_found", - ERROR_MESSAGE_ACTIVITY_PUB_LINK_NOT_FOUND: "activity_pub_link_not_found", - ERROR_MESSAGE_ACTIVITY_PUB_MEDIA_NOT_FOUND: "activity_pub_media_not_found", - ERROR_MESSAGE_ACTIVITY_PUB_INCOMING_ACTIVITY_NOT_FOUND: "activity_pub_incoming_activity_not_found", - ERROR_MESSAGE_ACTIVITY_PUB_OUTGOING_ACTIVITY_NOT_FOUND: "activity_pub_outgoing_activity_not_found", - ERROR_MESSAGE_ACTIVITY_PUB_FOLLOWER_NOT_FOUND: "activity_pub_follower_not_found", - ERROR_MESSAGE_SPI_NOT_FOUND: "spi_not_found", - ERROR_MESSAGE_UNKNOWN_DOCUMENT: "unknown_document", - ERROR_MESSAGE_UNKNOWN_SYSTEM_SCHEDULE: "unknown_system_schedule", - ERROR_MESSAGE_UNKNOWN_IDENTITY: "unknown_identity", - ERROR_MESSAGE_UNKNOWN_ACCESS_CONTROL: "unknown_access_control", - ERROR_MESSAGE_UNKNOWN_REMOTE_ACTIVITY: "unknown_remote_activity", - ERROR_MESSAGE_UNKNOWN_CATEGORY_TYPE: "unknown_category_type", - ERROR_MESSAGE_UNKNOWN_CATEGORY: "unknown_category", - ERROR_MESSAGE_UNKNOWN_USER: "unknown_user", - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OBJECT: "unknown_activity_pub_object", - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_ACTIVITY: "unknown_activity_pub_activity", - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_PUBLIC_KEY: "unknown_activity_pub_public_key", - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_LINK: "unknown_activity_pub_link", - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_MEDIA: "unknown_activity_pub_media", - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_INCOMING_ACTIVITY: "unknown_activity_pub_incoming_activity", - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OUTGOING_ACTIVITY: "unknown_activity_pub_outgoing_activity", - ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_FOLLOWER: "unknown_activity_pub_follower", - ERROR_MESSAGE_UNKNOWN_SPI: "unknown_spi", - ERROR_MESSAGE_INVALID_ID: "invalid_id", - ERROR_MESSAGE_INVALID_PARAMETERS: "invalid_parameters", - ERROR_MESSAGE_INVALID_EMAIL_FOR_SIGNUP: "invalid_email", - ERROR_MESSAGE_INVALID_PASSWORD_FOR_SIGNUP: "invalid_password", - ERROR_MESSAGE_INVALID_EMAIL_FOR_VERIFY: "invalid_email", - ERROR_MESSAGE_INVALID_EMAIL_FOR_LOGIN: "invalid_email", - ERROR_MESSAGE_INVALID_PASSWORD_FOR_LOGIN: "invalid_password", - ERROR_MESSAGE_INVALID_RESOURCE_FOR_WEBFINGER: "invalid_resource", + ERROR_MESSAGE_INITIALIZE: "initialize", + ERROR_MESSAGE_NOT_IMPLEMENTED: "not_implemented", + ERROR_MESSAGE_OPERATION_FAILED: "operation_failed", + ERROR_MESSAGE_OPERATION_NOT_SUPPORTED: "operation_not_supported", + ERROR_MESSAGE_UNRESOLVED_DEPENDENCIES: "unresolved_dependencies", + ERROR_MESSAGE_SYSTEM_COMPONENT_NOT_FOUND: "system_component_not_found", + ERROR_MESSAGE_DOCUMENT_NOT_FOUND: "document_not_found", + ERROR_MESSAGE_SYSTEM_SCHEDULE_NOT_FOUND: "system_schedule_not_found", + ERROR_MESSAGE_IDENTITY_NOT_FOUND: "identity_not_found", + ERROR_MESSAGE_ACCESS_CONTROL_NOT_FOUND: "access_control_not_found", + ERROR_MESSAGE_REMOTE_ACTIVITY_NOT_FOUND: "remote_activity_not_found", + ERROR_MESSAGE_CATEGORY_TYPE_NOT_FOUND: "category_type_not_found", + ERROR_MESSAGE_CATEGORY_NOT_FOUND: "category_not_found", + ERROR_MESSAGE_USER_NOT_FOUND: "user_not_found", + ERROR_MESSAGE_ACTIVITY_PUB_OBJECT_NOT_FOUND: "activity_pub_object_not_found", + ERROR_MESSAGE_ACTIVITY_PUB_ACTIVITY_NOT_FOUND: "activity_pub_activity_not_found", + ERROR_MESSAGE_ACTIVITY_PUB_PUBLIC_KEY_NOT_FOUND: "activity_pub_public_key_not_found", + ERROR_MESSAGE_ACTIVITY_PUB_LINK_NOT_FOUND: "activity_pub_link_not_found", + ERROR_MESSAGE_ACTIVITY_PUB_MEDIA_NOT_FOUND: "activity_pub_media_not_found", + ERROR_MESSAGE_ACTIVITY_PUB_INCOMING_ACTIVITY_NOT_FOUND: "activity_pub_incoming_activity_not_found", + ERROR_MESSAGE_ACTIVITY_PUB_OUTGOING_ACTIVITY_NOT_FOUND: "activity_pub_outgoing_activity_not_found", + ERROR_MESSAGE_ACTIVITY_PUB_FOLLOWER_NOT_FOUND: "activity_pub_follower_not_found", + ERROR_MESSAGE_SPI_NOT_FOUND: "spi_not_found", + ERROR_MESSAGE_UNKNOWN_DOCUMENT: "unknown_document", + ERROR_MESSAGE_UNKNOWN_SYSTEM_SCHEDULE: "unknown_system_schedule", + ERROR_MESSAGE_UNKNOWN_IDENTITY: "unknown_identity", + ERROR_MESSAGE_UNKNOWN_ACCESS_CONTROL: "unknown_access_control", + ERROR_MESSAGE_UNKNOWN_REMOTE_ACTIVITY: "unknown_remote_activity", + ERROR_MESSAGE_UNKNOWN_CATEGORY_TYPE: "unknown_category_type", + ERROR_MESSAGE_UNKNOWN_CATEGORY: "unknown_category", + ERROR_MESSAGE_UNKNOWN_USER: "unknown_user", + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OBJECT: "unknown_activity_pub_object", + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_ACTIVITY: "unknown_activity_pub_activity", + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_PUBLIC_KEY: "unknown_activity_pub_public_key", + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_LINK: "unknown_activity_pub_link", + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_MEDIA: "unknown_activity_pub_media", + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_INCOMING_ACTIVITY: "unknown_activity_pub_incoming_activity", + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_OUTGOING_ACTIVITY: "unknown_activity_pub_outgoing_activity", + ERROR_MESSAGE_UNKNOWN_ACTIVITY_PUB_FOLLOWER: "unknown_activity_pub_follower", + ERROR_MESSAGE_UNKNOWN_SPI: "unknown_spi", + ERROR_MESSAGE_INVALID_ID: "invalid_id", + ERROR_MESSAGE_INVALID_PARAMETERS: "invalid_parameters", + ERROR_MESSAGE_INVALID_USERNAME_FOR_CHECK_USERNAME_AVAILABILITY: "invalid_username", + 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_VERIFY: "invalid_email", + ERROR_MESSAGE_INVALID_EMAIL_FOR_LOGIN: "invalid_email", + ERROR_MESSAGE_INVALID_PASSWORD_FOR_LOGIN: "invalid_password", + ERROR_MESSAGE_INVALID_RESOURCE_FOR_WEBFINGER: "invalid_resource", // CUSTOM_ERRORS ERROR_MESSAGE_DATA_INTEGRITY_VIOLATION: "data_integrity_violation", ERROR_MESSAGE_INVALID_STATE: "invalid_state", diff --git a/components/contracts/api.go b/components/contracts/api.go index 79582de..9b3a8d1 100644 --- a/components/contracts/api.go +++ b/components/contracts/api.go @@ -8,6 +8,7 @@ type IApi interface { //API Methods SystemCall(*SystemCallRequest) (*SystemCallResult, error) Echo(*EchoRequest) (*EchoResult, error) + CheckUsernameAvailability(*CheckUsernameAvailabilityRequest) (*CheckUsernameAvailabilityResult, error) Signup(*SignupRequest) (*SignupResult, error) Verify(*VerifyRequest) (*VerifyResult, error) Login(*LoginRequest) (*LoginResult, error) diff --git a/components/contracts/opcodes.go b/components/contracts/opcodes.go index addc1fd..51410f5 100644 --- a/components/contracts/opcodes.go +++ b/components/contracts/opcodes.go @@ -12,6 +12,10 @@ const ( ECHO_REQUEST = 0x0541BD72 ECHO_RESULT = 0xAB2FF7D4 + //CheckUsernameAvailabilityOperation + CHECK_USERNAME_AVAILABILITY_REQUEST = 0xA9501A55 + CHECK_USERNAME_AVAILABILITY_RESULT = 0x067190FF + //SignupOperation SIGNUP_REQUEST = 0x48DB23BF SIGNUP_RESULT = 0x83D062B4 @@ -85,6 +89,8 @@ var OPCODES = Opcodes{ 0x00000000: "N/A", 0x0541BD72: "ECHO", 0xAB2FF7D4: "Echo", + 0xA9501A55: "CHECK_USERNAME_AVAILABILITY", + 0x067190FF: "CheckUsernameAvailability", 0x48DB23BF: "SIGNUP", 0x83D062B4: "Signup", 0x8B78F7F6: "VERIFY", diff --git a/components/contracts/spi.go b/components/contracts/spi.go index 1c0b44f..dc7bbf6 100644 --- a/components/contracts/spi.go +++ b/components/contracts/spi.go @@ -56,6 +56,7 @@ type ( Filter(predicate SpiFilterPredicate) ISpiCollection Map(predicate SpiMapPredicate) ISpiCollection 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) Verify(email string, token string, code string, editor Identity) (IVerifyResult, error) Login(email string, password string, editor Identity) (ILoginResult, error) @@ -79,6 +80,10 @@ type ( Document() IDocument } + ICheckUsernameAvailabilityResult interface { + IsAvailable() bool + } + ISignupResult interface { Token() string Code() string diff --git a/components/contracts/system_component.go b/components/contracts/system_component.go index 1e14a22..ead75f5 100644 --- a/components/contracts/system_component.go +++ b/components/contracts/system_component.go @@ -258,6 +258,7 @@ type ( RemoveSpi(id int64, editor Identity) (ISpi, error) RemoveSpiAtomic(transaction ITransaction, id int64, editor Identity) (ISpi, error) 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) Verify(email string, token string, code string, editor Identity) (IVerifyResult, error) Login(email string, password string, editor Identity) (ILoginResult, error) @@ -294,6 +295,7 @@ type ( NewActivityPubFollower(id int64, handle string, inbox string, subject string, activity string, accepted bool) (IActivityPubFollower, error) NewSpi() (ISpi, error) NewEchoResult(document IDocument, ignored interface{}) IEchoResult + NewCheckUsernameAvailabilityResult(isAvailable bool, ignored interface{}) ICheckUsernameAvailabilityResult NewSignupResult(token string, code string, ignored interface{}) ISignupResult NewVerifyResult(token string, ignored interface{}) IVerifyResult NewLoginResult(username string, token string, ignored interface{}) ILoginResult diff --git a/components/contracts/system_dispatcher.go b/components/contracts/system_dispatcher.go index ff360c0..c2019d8 100644 --- a/components/contracts/system_dispatcher.go +++ b/components/contracts/system_dispatcher.go @@ -1033,6 +1033,7 @@ type IDispatcher interface { // the transaction if used in an x.Atomic context. This method is synchronous. RemoveSpi(id int64) ISpi Echo(document IDocument) (IEchoResult, error) + CheckUsernameAvailability(username string) (ICheckUsernameAvailabilityResult, error) Signup(username string, email string, password string) (ISignupResult, error) Verify(email string, token string, code string) (IVerifyResult, error) Login(email string, password string) (ILoginResult, error) @@ -1121,6 +1122,8 @@ type IDispatcher interface { NewSpis() ISpiCollection // NewEchoResult creates a new result container for 'Echo' system action. NewEchoResult(document IDocument) IEchoResult + // NewCheckUsernameAvailabilityResult creates a new result container for 'Check Username Availability' system action. + NewCheckUsernameAvailabilityResult(isAvailable bool) ICheckUsernameAvailabilityResult // NewSignupResult creates a new result container for 'Signup' system action. NewSignupResult(token string, code string) ISignupResult // NewVerifyResult creates a new result container for 'Verify' system action. diff --git a/components/core/api_methods.go b/components/core/api_methods.go index 6524f52..5bd5abd 100644 --- a/components/core/api_methods.go +++ b/components/core/api_methods.go @@ -25,6 +25,16 @@ func (api *api) Echo(request *EchoRequest) (*EchoResult, error) { } } +func (api *api) CheckUsernameAvailability(request *CheckUsernameAvailabilityRequest) (*CheckUsernameAvailabilityResult, error) { + result, err := api.call(CHECK_USERNAME_AVAILABILITY_REQUEST, request) + + if err != nil { + return nil, err + } else { + return result.(*CheckUsernameAvailabilityResult), nil + } +} + func (api *api) Signup(request *SignupRequest) (*SignupResult, error) { result, err := api.call(SIGNUP_REQUEST, request) @@ -198,6 +208,7 @@ func (api *api) GetInbox(request *GetInboxRequest) (*GetInboxResult, error) { func init() { API_RESULT[SYSTEM_CALL_RESULT] = SystemCallResult{} API_RESULT[ECHO_RESULT] = EchoResult{} + API_RESULT[CHECK_USERNAME_AVAILABILITY_RESULT] = CheckUsernameAvailabilityResult{} API_RESULT[SIGNUP_RESULT] = SignupResult{} API_RESULT[VERIFY_RESULT] = VerifyResult{} API_RESULT[LOGIN_RESULT] = LoginResult{} diff --git a/components/core/initializer.go b/components/core/initializer.go index 623f082..a61d570 100644 --- a/components/core/initializer.go +++ b/components/core/initializer.go @@ -1099,6 +1099,10 @@ func (conductor *conductor) Echo(document IDocument, editor Identity) (IEchoResu return conductor.spiManager.Echo(document, editor) } +func (conductor *conductor) CheckUsernameAvailability(username string, editor Identity) (ICheckUsernameAvailabilityResult, error) { + return conductor.spiManager.CheckUsernameAvailability(username, editor) +} + func (conductor *conductor) Signup(username string, email string, password string, editor Identity) (ISignupResult, error) { return conductor.spiManager.Signup(username, email, password, editor) } @@ -1239,6 +1243,10 @@ func (conductor *conductor) NewEchoResult(document IDocument, _ interface{}) IEc return NewEchoResult(document, nil) } +func (conductor *conductor) NewCheckUsernameAvailabilityResult(isAvailable bool, _ interface{}) ICheckUsernameAvailabilityResult { + return NewCheckUsernameAvailabilityResult(isAvailable, nil) +} + func (conductor *conductor) NewSignupResult(token string, code string, _ interface{}) ISignupResult { return NewSignupResult(token, code, nil) } diff --git a/components/core/spi.go b/components/core/spi.go index 0a3364d..6e9177a 100644 --- a/components/core/spi.go +++ b/components/core/spi.go @@ -256,6 +256,10 @@ func (dispatcher *dispatcher) Echo(document IDocument) (IEchoResult, error) { return dispatcher.conductor.SpiManager().Echo(document, dispatcher.identity) } +func (dispatcher *dispatcher) CheckUsernameAvailability(username string) (ICheckUsernameAvailabilityResult, error) { + return dispatcher.conductor.SpiManager().CheckUsernameAvailability(username, dispatcher.identity) +} + func (dispatcher *dispatcher) Signup(username string, email string, password string) (ISignupResult, error) { return dispatcher.conductor.SpiManager().Signup(username, email, password, dispatcher.identity) } diff --git a/components/core/spi_manager.go b/components/core/spi_manager.go index 36dc9bb..4ccce8c 100644 --- a/components/core/spi_manager.go +++ b/components/core/spi_manager.go @@ -231,6 +231,45 @@ func (manager *spiManager) Echo(document IDocument, editor Identity) (result IEc } } +//region ICheckUsernameAvailabilityResult Implementation + +type checkUsernameAvailabilityResult struct { + isAvailable bool +} + +func NewCheckUsernameAvailabilityResult(isAvailable bool, _ interface{}) ICheckUsernameAvailabilityResult { + return &checkUsernameAvailabilityResult{ + isAvailable: isAvailable, + } +} + +func (result checkUsernameAvailabilityResult) IsAvailable() bool { + return result.isAvailable +} + +//endregion + +func (manager *spiManager) CheckUsernameAvailability(username string, editor Identity) (result ICheckUsernameAvailabilityResult, err error) { + if !validators.UsernameIsValid(username) { + return nil, ERROR_INVALID_USERNAME_FOR_CHECK_USERNAME_AVAILABILITY + } + + defer func() { + if reason := recover(); reason != nil { + err = manager.Error(reason) + } + }() + + editor.Lock(CHECK_USERNAME_AVAILABILITY_REQUEST) + defer editor.Unlock(CHECK_USERNAME_AVAILABILITY_REQUEST) + + if result, err = commands.CheckUsernameAvailability(NewDispatcher(Conductor, editor), username); err != nil { + return nil, err + } else { + return result, nil + } +} + //region ISignupResult Implementation type signupResult struct { @@ -264,6 +303,10 @@ func (manager *spiManager) Signup(username string, email string, password string } } + if !validators.UsernameIsValid(username) { + return nil, ERROR_INVALID_USERNAME_FOR_SIGNUP + } + if !validators.PasswordIsValid(password) { return nil, ERROR_INVALID_PASSWORD_FOR_SIGNUP } diff --git a/components/core/spi_manager_test.go b/components/core/spi_manager_test.go index 52fd319..9cd92e5 100644 --- a/components/core/spi_manager_test.go +++ b/components/core/spi_manager_test.go @@ -160,6 +160,17 @@ func TestSpiManager_Echo(test *testing.T) { _ = result } +func TestSpiManager_CheckUsernameAvailability(test *testing.T) { + manager := Conductor.SpiManager() + + result, err := manager.CheckUsernameAvailability("username", nil) + if err != nil { + test.Fatal(err) + } + + _ = result +} + func TestSpiManager_Signup(test *testing.T) { manager := Conductor.SpiManager() diff --git a/components/core/system_results.go b/components/core/system_results.go index 8fe5fae..42da25a 100644 --- a/components/core/system_results.go +++ b/components/core/system_results.go @@ -8,6 +8,10 @@ func (dispatcher *dispatcher) NewEchoResult(document IDocument) IEchoResult { return NewEchoResult(document, nil) } +func (dispatcher *dispatcher) NewCheckUsernameAvailabilityResult(isAvailable bool) ICheckUsernameAvailabilityResult { + return NewCheckUsernameAvailabilityResult(isAvailable, nil) +} + func (dispatcher *dispatcher) NewSignupResult(token string, code string) ISignupResult { return NewSignupResult(token, code, nil) }