diff --git a/gen/events.pb.go b/gen/events.pb.go index 8181a00..f2b0cb5 100644 --- a/gen/events.pb.go +++ b/gen/events.pb.go @@ -9,6 +9,7 @@ package gen import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" unsafe "unsafe" @@ -73,32 +74,32 @@ func (EventType) EnumDescriptor() ([]byte, []int) { return file_events_proto_rawDescGZIP(), []int{0} } -type Controller struct { +type Events struct { state protoimpl.MessageState `protogen:"open.v1"` - Type EventType `protobuf:"varint,1,opt,name=type,proto3,enum=slug.EventType" json:"type,omitempty"` + Type EventType `protobuf:"varint,1,opt,name=type,proto3,enum=events.EventType" json:"type,omitempty"` // Types that are valid to be assigned to Payload: // - // *Controller_SlugEvent - // *Controller_GetSessionsEvent - Payload isController_Payload `protobuf_oneof:"payload"` + // *Events_SlugEvent + // *Events_GetSessionsEvent + Payload isEvents_Payload `protobuf_oneof:"payload"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *Controller) Reset() { - *x = Controller{} +func (x *Events) Reset() { + *x = Events{} mi := &file_events_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *Controller) String() string { +func (x *Events) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Controller) ProtoMessage() {} +func (*Events) ProtoMessage() {} -func (x *Controller) ProtoReflect() protoreflect.Message { +func (x *Events) ProtoReflect() protoreflect.Message { mi := &file_events_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -110,86 +111,86 @@ func (x *Controller) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Controller.ProtoReflect.Descriptor instead. -func (*Controller) Descriptor() ([]byte, []int) { +// Deprecated: Use Events.ProtoReflect.Descriptor instead. +func (*Events) Descriptor() ([]byte, []int) { return file_events_proto_rawDescGZIP(), []int{0} } -func (x *Controller) GetType() EventType { +func (x *Events) GetType() EventType { if x != nil { return x.Type } return EventType_AUTHENTICATION } -func (x *Controller) GetPayload() isController_Payload { +func (x *Events) GetPayload() isEvents_Payload { if x != nil { return x.Payload } return nil } -func (x *Controller) GetSlugEvent() *SlugChangeEvent { +func (x *Events) GetSlugEvent() *SlugChangeEvent { if x != nil { - if x, ok := x.Payload.(*Controller_SlugEvent); ok { + if x, ok := x.Payload.(*Events_SlugEvent); ok { return x.SlugEvent } } return nil } -func (x *Controller) GetGetSessionsEvent() *GetSessionsEvent { +func (x *Events) GetGetSessionsEvent() *GetSessionsEvent { if x != nil { - if x, ok := x.Payload.(*Controller_GetSessionsEvent); ok { + if x, ok := x.Payload.(*Events_GetSessionsEvent); ok { return x.GetSessionsEvent } } return nil } -type isController_Payload interface { - isController_Payload() +type isEvents_Payload interface { + isEvents_Payload() } -type Controller_SlugEvent struct { +type Events_SlugEvent struct { SlugEvent *SlugChangeEvent `protobuf:"bytes,11,opt,name=slug_event,json=slugEvent,proto3,oneof"` } -type Controller_GetSessionsEvent struct { +type Events_GetSessionsEvent struct { GetSessionsEvent *GetSessionsEvent `protobuf:"bytes,12,opt,name=get_sessions_event,json=getSessionsEvent,proto3,oneof"` } -func (*Controller_SlugEvent) isController_Payload() {} +func (*Events_SlugEvent) isEvents_Payload() {} -func (*Controller_GetSessionsEvent) isController_Payload() {} +func (*Events_GetSessionsEvent) isEvents_Payload() {} -type Client struct { +type Node struct { state protoimpl.MessageState `protogen:"open.v1"` - Type EventType `protobuf:"varint,1,opt,name=type,proto3,enum=slug.EventType" json:"type,omitempty"` + Type EventType `protobuf:"varint,1,opt,name=type,proto3,enum=events.EventType" json:"type,omitempty"` // Types that are valid to be assigned to Payload: // - // *Client_AuthEvent - // *Client_SlugEventResponse - // *Client_GetSessionsEvent - Payload isClient_Payload `protobuf_oneof:"payload"` + // *Node_AuthEvent + // *Node_SlugEventResponse + // *Node_GetSessionsEvent + Payload isNode_Payload `protobuf_oneof:"payload"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *Client) Reset() { - *x = Client{} +func (x *Node) Reset() { + *x = Node{} mi := &file_events_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *Client) String() string { +func (x *Node) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Client) ProtoMessage() {} +func (*Node) ProtoMessage() {} -func (x *Client) ProtoReflect() protoreflect.Message { +func (x *Node) ProtoReflect() protoreflect.Message { mi := &file_events_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -201,73 +202,73 @@ func (x *Client) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Client.ProtoReflect.Descriptor instead. -func (*Client) Descriptor() ([]byte, []int) { +// Deprecated: Use Node.ProtoReflect.Descriptor instead. +func (*Node) Descriptor() ([]byte, []int) { return file_events_proto_rawDescGZIP(), []int{1} } -func (x *Client) GetType() EventType { +func (x *Node) GetType() EventType { if x != nil { return x.Type } return EventType_AUTHENTICATION } -func (x *Client) GetPayload() isClient_Payload { +func (x *Node) GetPayload() isNode_Payload { if x != nil { return x.Payload } return nil } -func (x *Client) GetAuthEvent() *Authentication { +func (x *Node) GetAuthEvent() *Authentication { if x != nil { - if x, ok := x.Payload.(*Client_AuthEvent); ok { + if x, ok := x.Payload.(*Node_AuthEvent); ok { return x.AuthEvent } } return nil } -func (x *Client) GetSlugEventResponse() *SlugChangeEventResponse { +func (x *Node) GetSlugEventResponse() *SlugChangeEventResponse { if x != nil { - if x, ok := x.Payload.(*Client_SlugEventResponse); ok { + if x, ok := x.Payload.(*Node_SlugEventResponse); ok { return x.SlugEventResponse } } return nil } -func (x *Client) GetGetSessionsEvent() *GetSessionsResponse { +func (x *Node) GetGetSessionsEvent() *GetSessionsResponse { if x != nil { - if x, ok := x.Payload.(*Client_GetSessionsEvent); ok { + if x, ok := x.Payload.(*Node_GetSessionsEvent); ok { return x.GetSessionsEvent } } return nil } -type isClient_Payload interface { - isClient_Payload() +type isNode_Payload interface { + isNode_Payload() } -type Client_AuthEvent struct { +type Node_AuthEvent struct { AuthEvent *Authentication `protobuf:"bytes,10,opt,name=auth_event,json=authEvent,proto3,oneof"` } -type Client_SlugEventResponse struct { +type Node_SlugEventResponse struct { SlugEventResponse *SlugChangeEventResponse `protobuf:"bytes,11,opt,name=slug_event_response,json=slugEventResponse,proto3,oneof"` } -type Client_GetSessionsEvent struct { +type Node_GetSessionsEvent struct { GetSessionsEvent *GetSessionsResponse `protobuf:"bytes,12,opt,name=get_sessions_event,json=getSessionsEvent,proto3,oneof"` } -func (*Client_AuthEvent) isClient_Payload() {} +func (*Node_AuthEvent) isNode_Payload() {} -func (*Client_SlugEventResponse) isClient_Payload() {} +func (*Node_SlugEventResponse) isNode_Payload() {} -func (*Client_GetSessionsEvent) isClient_Payload() {} +func (*Node_GetSessionsEvent) isNode_Payload() {} type Authentication struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -469,26 +470,152 @@ func (x *GetSessionsEvent) GetIdentity() string { return "" } +type GetSessionsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Details []*Detail `protobuf:"bytes,1,rep,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetSessionsResponse) Reset() { + *x = GetSessionsResponse{} + mi := &file_events_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetSessionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSessionsResponse) ProtoMessage() {} + +func (x *GetSessionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_events_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetSessionsResponse.ProtoReflect.Descriptor instead. +func (*GetSessionsResponse) Descriptor() ([]byte, []int) { + return file_events_proto_rawDescGZIP(), []int{6} +} + +func (x *GetSessionsResponse) GetDetails() []*Detail { + if x != nil { + return x.Details + } + return nil +} + +type Detail struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + ForwardingType string `protobuf:"bytes,2,opt,name=forwarding_type,json=forwardingType,proto3" json:"forwarding_type,omitempty"` + Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` + UserId string `protobuf:"bytes,4,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + Active bool `protobuf:"varint,5,opt,name=active,proto3" json:"active,omitempty"` + StartedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Detail) Reset() { + *x = Detail{} + mi := &file_events_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Detail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Detail) ProtoMessage() {} + +func (x *Detail) ProtoReflect() protoreflect.Message { + mi := &file_events_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Detail.ProtoReflect.Descriptor instead. +func (*Detail) Descriptor() ([]byte, []int) { + return file_events_proto_rawDescGZIP(), []int{7} +} + +func (x *Detail) GetNode() string { + if x != nil { + return x.Node + } + return "" +} + +func (x *Detail) GetForwardingType() string { + if x != nil { + return x.ForwardingType + } + return "" +} + +func (x *Detail) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Detail) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *Detail) GetActive() bool { + if x != nil { + return x.Active + } + return false +} + +func (x *Detail) GetStartedAt() *timestamppb.Timestamp { + if x != nil { + return x.StartedAt + } + return nil +} + var File_events_proto protoreflect.FileDescriptor const file_events_proto_rawDesc = "" + "\n" + - "\fevents.proto\x12\x04slug\x1a\n" + - "user.proto\"\xbc\x01\n" + + "\fevents.proto\x12\x06events\x1a\x1fgoogle/protobuf/timestamp.proto\"\xbe\x01\n" + + "\x06Events\x12%\n" + + "\x04type\x18\x01 \x01(\x0e2\x11.events.EventTypeR\x04type\x128\n" + "\n" + - "Controller\x12#\n" + - "\x04type\x18\x01 \x01(\x0e2\x0f.slug.EventTypeR\x04type\x126\n" + - "\n" + - "slug_event\x18\v \x01(\v2\x15.slug.SlugChangeEventH\x00R\tslugEvent\x12F\n" + - "\x12get_sessions_event\x18\f \x01(\v2\x16.slug.GetSessionsEventH\x00R\x10getSessionsEventB\t\n" + - "\apayload\"\x8b\x02\n" + - "\x06Client\x12#\n" + - "\x04type\x18\x01 \x01(\x0e2\x0f.slug.EventTypeR\x04type\x125\n" + + "slug_event\x18\v \x01(\v2\x17.events.SlugChangeEventH\x00R\tslugEvent\x12H\n" + + "\x12get_sessions_event\x18\f \x01(\v2\x18.events.GetSessionsEventH\x00R\x10getSessionsEventB\t\n" + + "\apayload\"\x91\x02\n" + + "\x04Node\x12%\n" + + "\x04type\x18\x01 \x01(\x0e2\x11.events.EventTypeR\x04type\x127\n" + "\n" + "auth_event\x18\n" + - " \x01(\v2\x14.slug.AuthenticationH\x00R\tauthEvent\x12O\n" + - "\x13slug_event_response\x18\v \x01(\v2\x1d.slug.SlugChangeEventResponseH\x00R\x11slugEventResponse\x12I\n" + - "\x12get_sessions_event\x18\f \x01(\v2\x19.slug.GetSessionsResponseH\x00R\x10getSessionsEventB\t\n" + + " \x01(\v2\x16.events.AuthenticationH\x00R\tauthEvent\x12Q\n" + + "\x13slug_event_response\x18\v \x01(\v2\x1f.events.SlugChangeEventResponseH\x00R\x11slugEventResponse\x12K\n" + + "\x12get_sessions_event\x18\f \x01(\v2\x1b.events.GetSessionsResponseH\x00R\x10getSessionsEventB\t\n" + "\apayload\"K\n" + "\x0eAuthentication\x12\x1d\n" + "\n" + @@ -501,14 +628,24 @@ const file_events_proto_rawDesc = "" + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + "\amessage\x18\x02 \x01(\tR\amessage\".\n" + "\x10GetSessionsEvent\x12\x1a\n" + - "\bidentity\x18\x01 \x01(\tR\bidentity*\\\n" + + "\bidentity\x18\x01 \x01(\tR\bidentity\"?\n" + + "\x13GetSessionsResponse\x12(\n" + + "\adetails\x18\x01 \x03(\v2\x0e.events.DetailR\adetails\"\xc5\x01\n" + + "\x06Detail\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12'\n" + + "\x0fforwarding_type\x18\x02 \x01(\tR\x0eforwardingType\x12\x12\n" + + "\x04slug\x18\x03 \x01(\tR\x04slug\x12\x17\n" + + "\auser_id\x18\x04 \x01(\tR\x06userId\x12\x16\n" + + "\x06active\x18\x05 \x01(\bR\x06active\x129\n" + + "\n" + + "started_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt*\\\n" + "\tEventType\x12\x12\n" + "\x0eAUTHENTICATION\x10\x00\x12\x0f\n" + "\vSLUG_CHANGE\x10\x01\x12\x18\n" + "\x14SLUG_CHANGE_RESPONSE\x10\x02\x12\x10\n" + - "\fGET_SESSIONS\x10\x032?\n" + - "\fEventService\x12/\n" + - "\tSubscribe\x12\f.slug.Client\x1a\x10.slug.Controller(\x010\x01B\aZ\x05./genb\x06proto3" + "\fGET_SESSIONS\x10\x032=\n" + + "\fEventService\x12-\n" + + "\tSubscribe\x12\f.events.Node\x1a\x0e.events.Events(\x010\x01B\aZ\x05./genb\x06proto3" var ( file_events_proto_rawDescOnce sync.Once @@ -523,32 +660,36 @@ func file_events_proto_rawDescGZIP() []byte { } var file_events_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_events_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_events_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_events_proto_goTypes = []any{ - (EventType)(0), // 0: slug.EventType - (*Controller)(nil), // 1: slug.Controller - (*Client)(nil), // 2: slug.Client - (*Authentication)(nil), // 3: slug.Authentication - (*SlugChangeEvent)(nil), // 4: slug.SlugChangeEvent - (*SlugChangeEventResponse)(nil), // 5: slug.SlugChangeEventResponse - (*GetSessionsEvent)(nil), // 6: slug.GetSessionsEvent - (*GetSessionsResponse)(nil), // 7: slug.GetSessionsResponse + (EventType)(0), // 0: events.EventType + (*Events)(nil), // 1: events.Events + (*Node)(nil), // 2: events.Node + (*Authentication)(nil), // 3: events.Authentication + (*SlugChangeEvent)(nil), // 4: events.SlugChangeEvent + (*SlugChangeEventResponse)(nil), // 5: events.SlugChangeEventResponse + (*GetSessionsEvent)(nil), // 6: events.GetSessionsEvent + (*GetSessionsResponse)(nil), // 7: events.GetSessionsResponse + (*Detail)(nil), // 8: events.Detail + (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp } var file_events_proto_depIdxs = []int32{ - 0, // 0: slug.Controller.type:type_name -> slug.EventType - 4, // 1: slug.Controller.slug_event:type_name -> slug.SlugChangeEvent - 6, // 2: slug.Controller.get_sessions_event:type_name -> slug.GetSessionsEvent - 0, // 3: slug.Client.type:type_name -> slug.EventType - 3, // 4: slug.Client.auth_event:type_name -> slug.Authentication - 5, // 5: slug.Client.slug_event_response:type_name -> slug.SlugChangeEventResponse - 7, // 6: slug.Client.get_sessions_event:type_name -> slug.GetSessionsResponse - 2, // 7: slug.EventService.Subscribe:input_type -> slug.Client - 1, // 8: slug.EventService.Subscribe:output_type -> slug.Controller - 8, // [8:9] is the sub-list for method output_type - 7, // [7:8] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 0, // 0: events.Events.type:type_name -> events.EventType + 4, // 1: events.Events.slug_event:type_name -> events.SlugChangeEvent + 6, // 2: events.Events.get_sessions_event:type_name -> events.GetSessionsEvent + 0, // 3: events.Node.type:type_name -> events.EventType + 3, // 4: events.Node.auth_event:type_name -> events.Authentication + 5, // 5: events.Node.slug_event_response:type_name -> events.SlugChangeEventResponse + 7, // 6: events.Node.get_sessions_event:type_name -> events.GetSessionsResponse + 8, // 7: events.GetSessionsResponse.details:type_name -> events.Detail + 9, // 8: events.Detail.started_at:type_name -> google.protobuf.Timestamp + 2, // 9: events.EventService.Subscribe:input_type -> events.Node + 1, // 10: events.EventService.Subscribe:output_type -> events.Events + 10, // [10:11] is the sub-list for method output_type + 9, // [9:10] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_events_proto_init() } @@ -556,15 +697,14 @@ func file_events_proto_init() { if File_events_proto != nil { return } - file_user_proto_init() file_events_proto_msgTypes[0].OneofWrappers = []any{ - (*Controller_SlugEvent)(nil), - (*Controller_GetSessionsEvent)(nil), + (*Events_SlugEvent)(nil), + (*Events_GetSessionsEvent)(nil), } file_events_proto_msgTypes[1].OneofWrappers = []any{ - (*Client_AuthEvent)(nil), - (*Client_SlugEventResponse)(nil), - (*Client_GetSessionsEvent)(nil), + (*Node_AuthEvent)(nil), + (*Node_SlugEventResponse)(nil), + (*Node_GetSessionsEvent)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -572,7 +712,7 @@ func file_events_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_events_proto_rawDesc), len(file_events_proto_rawDesc)), NumEnums: 1, - NumMessages: 6, + NumMessages: 8, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/events_grpc.pb.go b/gen/events_grpc.pb.go index d10f456..923a6ac 100644 --- a/gen/events_grpc.pb.go +++ b/gen/events_grpc.pb.go @@ -19,14 +19,14 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - EventService_Subscribe_FullMethodName = "/slug.EventService/Subscribe" + EventService_Subscribe_FullMethodName = "/events.EventService/Subscribe" ) // EventServiceClient is the client API for EventService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type EventServiceClient interface { - Subscribe(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[Client, Controller], error) + Subscribe(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[Node, Events], error) } type eventServiceClient struct { @@ -37,24 +37,24 @@ func NewEventServiceClient(cc grpc.ClientConnInterface) EventServiceClient { return &eventServiceClient{cc} } -func (c *eventServiceClient) Subscribe(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[Client, Controller], error) { +func (c *eventServiceClient) Subscribe(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[Node, Events], error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) stream, err := c.cc.NewStream(ctx, &EventService_ServiceDesc.Streams[0], EventService_Subscribe_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &grpc.GenericClientStream[Client, Controller]{ClientStream: stream} + x := &grpc.GenericClientStream[Node, Events]{ClientStream: stream} return x, nil } // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. -type EventService_SubscribeClient = grpc.BidiStreamingClient[Client, Controller] +type EventService_SubscribeClient = grpc.BidiStreamingClient[Node, Events] // EventServiceServer is the server API for EventService service. // All implementations must embed UnimplementedEventServiceServer // for forward compatibility. type EventServiceServer interface { - Subscribe(grpc.BidiStreamingServer[Client, Controller]) error + Subscribe(grpc.BidiStreamingServer[Node, Events]) error mustEmbedUnimplementedEventServiceServer() } @@ -65,7 +65,7 @@ type EventServiceServer interface { // pointer dereference when methods are called. type UnimplementedEventServiceServer struct{} -func (UnimplementedEventServiceServer) Subscribe(grpc.BidiStreamingServer[Client, Controller]) error { +func (UnimplementedEventServiceServer) Subscribe(grpc.BidiStreamingServer[Node, Events]) error { return status.Error(codes.Unimplemented, "method Subscribe not implemented") } func (UnimplementedEventServiceServer) mustEmbedUnimplementedEventServiceServer() {} @@ -90,17 +90,17 @@ func RegisterEventServiceServer(s grpc.ServiceRegistrar, srv EventServiceServer) } func _EventService_Subscribe_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(EventServiceServer).Subscribe(&grpc.GenericServerStream[Client, Controller]{ServerStream: stream}) + return srv.(EventServiceServer).Subscribe(&grpc.GenericServerStream[Node, Events]{ServerStream: stream}) } // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. -type EventService_SubscribeServer = grpc.BidiStreamingServer[Client, Controller] +type EventService_SubscribeServer = grpc.BidiStreamingServer[Node, Events] // EventService_ServiceDesc is the grpc.ServiceDesc for EventService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) var EventService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "slug.EventService", + ServiceName: "events.EventService", HandlerType: (*EventServiceServer)(nil), Methods: []grpc.MethodDesc{}, Streams: []grpc.StreamDesc{ diff --git a/gen/user.pb.go b/gen/user.pb.go index e137e5a..996995b 100644 --- a/gen/user.pb.go +++ b/gen/user.pb.go @@ -9,7 +9,6 @@ package gen import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" unsafe "unsafe" @@ -114,7 +113,8 @@ func (x *CheckRequest) GetAuthToken() string { type CheckResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Response AuthorizationResponse `protobuf:"varint,1,opt,name=response,proto3,enum=slug.AuthorizationResponse" json:"response,omitempty"` + Response AuthorizationResponse `protobuf:"varint,1,opt,name=response,proto3,enum=user.AuthorizationResponse" json:"response,omitempty"` + User string `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -156,200 +156,30 @@ func (x *CheckResponse) GetResponse() AuthorizationResponse { return AuthorizationResponse_MESSAGE_TYPE_AUTHORIZED } -type GetSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionRequest) Reset() { - *x = GetSessionRequest{} - mi := &file_user_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionRequest) ProtoMessage() {} - -func (x *GetSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[2] +func (x *CheckResponse) GetUser() string { if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionRequest.ProtoReflect.Descriptor instead. -func (*GetSessionRequest) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{2} -} - -func (x *GetSessionRequest) GetIdentity() string { - if x != nil { - return x.Identity + return x.User } return "" } -type GetSessionsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Details []*Detail `protobuf:"bytes,1,rep,name=details,proto3" json:"details,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionsResponse) Reset() { - *x = GetSessionsResponse{} - mi := &file_user_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionsResponse) ProtoMessage() {} - -func (x *GetSessionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionsResponse.ProtoReflect.Descriptor instead. -func (*GetSessionsResponse) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{3} -} - -func (x *GetSessionsResponse) GetDetails() []*Detail { - if x != nil { - return x.Details - } - return nil -} - -type Detail struct { - state protoimpl.MessageState `protogen:"open.v1"` - ForwardingType string `protobuf:"bytes,1,opt,name=forwarding_type,json=forwardingType,proto3" json:"forwarding_type,omitempty"` - Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` - UserId string `protobuf:"bytes,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - Active bool `protobuf:"varint,4,opt,name=active,proto3" json:"active,omitempty"` - StartedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *Detail) Reset() { - *x = Detail{} - mi := &file_user_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Detail) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Detail) ProtoMessage() {} - -func (x *Detail) ProtoReflect() protoreflect.Message { - mi := &file_user_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Detail.ProtoReflect.Descriptor instead. -func (*Detail) Descriptor() ([]byte, []int) { - return file_user_proto_rawDescGZIP(), []int{4} -} - -func (x *Detail) GetForwardingType() string { - if x != nil { - return x.ForwardingType - } - return "" -} - -func (x *Detail) GetSlug() string { - if x != nil { - return x.Slug - } - return "" -} - -func (x *Detail) GetUserId() string { - if x != nil { - return x.UserId - } - return "" -} - -func (x *Detail) GetActive() bool { - if x != nil { - return x.Active - } - return false -} - -func (x *Detail) GetStartedAt() *timestamppb.Timestamp { - if x != nil { - return x.StartedAt - } - return nil -} - var File_user_proto protoreflect.FileDescriptor const file_user_proto_rawDesc = "" + "\n" + "\n" + - "user.proto\x12\x04slug\x1a\x1fgoogle/protobuf/timestamp.proto\"-\n" + + "user.proto\x12\x04user\"-\n" + "\fCheckRequest\x12\x1d\n" + "\n" + - "auth_token\x18\x01 \x01(\tR\tauthToken\"H\n" + + "auth_token\x18\x01 \x01(\tR\tauthToken\"\\\n" + "\rCheckResponse\x127\n" + - "\bresponse\x18\x01 \x01(\x0e2\x1b.slug.AuthorizationResponseR\bresponse\"/\n" + - "\x11GetSessionRequest\x12\x1a\n" + - "\bidentity\x18\x01 \x01(\tR\bidentity\"=\n" + - "\x13GetSessionsResponse\x12&\n" + - "\adetails\x18\x01 \x03(\v2\f.slug.DetailR\adetails\"\xb1\x01\n" + - "\x06Detail\x12'\n" + - "\x0fforwarding_type\x18\x01 \x01(\tR\x0eforwardingType\x12\x12\n" + - "\x04slug\x18\x02 \x01(\tR\x04slug\x12\x17\n" + - "\auser_id\x18\x03 \x01(\tR\x06userId\x12\x16\n" + - "\x06active\x18\x04 \x01(\bR\x06active\x129\n" + - "\n" + - "started_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt*S\n" + + "\bresponse\x18\x01 \x01(\x0e2\x1b.user.AuthorizationResponseR\bresponse\x12\x12\n" + + "\x04user\x18\x02 \x01(\tR\x04user*S\n" + "\x15AuthorizationResponse\x12\x1b\n" + "\x17MESSAGE_TYPE_AUTHORIZED\x10\x00\x12\x1d\n" + "\x19MESSAGE_TYPE_UNAUTHORIZED\x10\x012?\n" + "\vUserService\x120\n" + - "\x05Check\x12\x12.slug.CheckRequest\x1a\x13.slug.CheckResponse2P\n" + - "\fUserSessions\x12@\n" + - "\n" + - "GetSession\x12\x17.slug.GetSessionRequest\x1a\x19.slug.GetSessionsResponseB\aZ\x05./genb\x06proto3" + "\x05Check\x12\x12.user.CheckRequest\x1a\x13.user.CheckResponseB\aZ\x05./genb\x06proto3" var ( file_user_proto_rawDescOnce sync.Once @@ -364,29 +194,21 @@ func file_user_proto_rawDescGZIP() []byte { } var file_user_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_user_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_user_proto_msgTypes = make([]protoimpl.MessageInfo, 2) var file_user_proto_goTypes = []any{ - (AuthorizationResponse)(0), // 0: slug.AuthorizationResponse - (*CheckRequest)(nil), // 1: slug.CheckRequest - (*CheckResponse)(nil), // 2: slug.CheckResponse - (*GetSessionRequest)(nil), // 3: slug.GetSessionRequest - (*GetSessionsResponse)(nil), // 4: slug.GetSessionsResponse - (*Detail)(nil), // 5: slug.Detail - (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp + (AuthorizationResponse)(0), // 0: user.AuthorizationResponse + (*CheckRequest)(nil), // 1: user.CheckRequest + (*CheckResponse)(nil), // 2: user.CheckResponse } var file_user_proto_depIdxs = []int32{ - 0, // 0: slug.CheckResponse.response:type_name -> slug.AuthorizationResponse - 5, // 1: slug.GetSessionsResponse.details:type_name -> slug.Detail - 6, // 2: slug.Detail.started_at:type_name -> google.protobuf.Timestamp - 1, // 3: slug.UserService.Check:input_type -> slug.CheckRequest - 3, // 4: slug.UserSessions.GetSession:input_type -> slug.GetSessionRequest - 2, // 5: slug.UserService.Check:output_type -> slug.CheckResponse - 4, // 6: slug.UserSessions.GetSession:output_type -> slug.GetSessionsResponse - 5, // [5:7] is the sub-list for method output_type - 3, // [3:5] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 0, // 0: user.CheckResponse.response:type_name -> user.AuthorizationResponse + 1, // 1: user.UserService.Check:input_type -> user.CheckRequest + 2, // 2: user.UserService.Check:output_type -> user.CheckResponse + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name } func init() { file_user_proto_init() } @@ -400,9 +222,9 @@ func file_user_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_user_proto_rawDesc), len(file_user_proto_rawDesc)), NumEnums: 1, - NumMessages: 5, + NumMessages: 2, NumExtensions: 0, - NumServices: 2, + NumServices: 1, }, GoTypes: file_user_proto_goTypes, DependencyIndexes: file_user_proto_depIdxs, diff --git a/gen/user_grpc.pb.go b/gen/user_grpc.pb.go index 4481065..009615c 100644 --- a/gen/user_grpc.pb.go +++ b/gen/user_grpc.pb.go @@ -19,7 +19,7 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - UserService_Check_FullMethodName = "/slug.UserService/Check" + UserService_Check_FullMethodName = "/user.UserService/Check" ) // UserServiceClient is the client API for UserService service. @@ -108,7 +108,7 @@ func _UserService_Check_Handler(srv interface{}, ctx context.Context, dec func(i // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) var UserService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "slug.UserService", + ServiceName: "user.UserService", HandlerType: (*UserServiceServer)(nil), Methods: []grpc.MethodDesc{ { @@ -119,105 +119,3 @@ var UserService_ServiceDesc = grpc.ServiceDesc{ Streams: []grpc.StreamDesc{}, Metadata: "user.proto", } - -const ( - UserSessions_GetSession_FullMethodName = "/slug.UserSessions/GetSession" -) - -// UserSessionsClient is the client API for UserSessions service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type UserSessionsClient interface { - GetSession(ctx context.Context, in *GetSessionRequest, opts ...grpc.CallOption) (*GetSessionsResponse, error) -} - -type userSessionsClient struct { - cc grpc.ClientConnInterface -} - -func NewUserSessionsClient(cc grpc.ClientConnInterface) UserSessionsClient { - return &userSessionsClient{cc} -} - -func (c *userSessionsClient) GetSession(ctx context.Context, in *GetSessionRequest, opts ...grpc.CallOption) (*GetSessionsResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(GetSessionsResponse) - err := c.cc.Invoke(ctx, UserSessions_GetSession_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// UserSessionsServer is the server API for UserSessions service. -// All implementations must embed UnimplementedUserSessionsServer -// for forward compatibility. -type UserSessionsServer interface { - GetSession(context.Context, *GetSessionRequest) (*GetSessionsResponse, error) - mustEmbedUnimplementedUserSessionsServer() -} - -// UnimplementedUserSessionsServer must be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedUserSessionsServer struct{} - -func (UnimplementedUserSessionsServer) GetSession(context.Context, *GetSessionRequest) (*GetSessionsResponse, error) { - return nil, status.Error(codes.Unimplemented, "method GetSession not implemented") -} -func (UnimplementedUserSessionsServer) mustEmbedUnimplementedUserSessionsServer() {} -func (UnimplementedUserSessionsServer) testEmbeddedByValue() {} - -// UnsafeUserSessionsServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to UserSessionsServer will -// result in compilation errors. -type UnsafeUserSessionsServer interface { - mustEmbedUnimplementedUserSessionsServer() -} - -func RegisterUserSessionsServer(s grpc.ServiceRegistrar, srv UserSessionsServer) { - // If the following call panics, it indicates UnimplementedUserSessionsServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&UserSessions_ServiceDesc, srv) -} - -func _UserSessions_GetSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSessionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserSessionsServer).GetSession(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: UserSessions_GetSession_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserSessionsServer).GetSession(ctx, req.(*GetSessionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// UserSessions_ServiceDesc is the grpc.ServiceDesc for UserSessions service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var UserSessions_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "slug.UserSessions", - HandlerType: (*UserSessionsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetSession", - Handler: _UserSessions_GetSession_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "user.proto", -} diff --git a/proto/events.proto b/proto/events.proto index 2d3eeb3..c79437f 100644 --- a/proto/events.proto +++ b/proto/events.proto @@ -1,11 +1,13 @@ syntax = "proto3"; -package slug; +package events; option go_package = "./gen"; -import "user.proto"; + +import "google/protobuf/timestamp.proto"; + service EventService { - rpc Subscribe(stream Client) returns (stream Controller); + rpc Subscribe(stream Node) returns (stream Events); } enum EventType { @@ -15,7 +17,7 @@ enum EventType { GET_SESSIONS = 3; } -message Controller { +message Events { EventType type = 1; oneof payload { @@ -24,7 +26,7 @@ message Controller { } } -message Client { +message Node { EventType type = 1; oneof payload { @@ -51,4 +53,17 @@ message SlugChangeEventResponse { message GetSessionsEvent { string identity = 1; +} + +message GetSessionsResponse { + repeated Detail details = 1; +} + +message Detail { + string node = 1; + string forwarding_type = 2; + string slug = 3; + string user_id = 4; + bool active = 5; + google.protobuf.Timestamp started_at = 6; } \ No newline at end of file diff --git a/proto/user.proto b/proto/user.proto index 85cce43..2a84180 100644 --- a/proto/user.proto +++ b/proto/user.proto @@ -1,17 +1,11 @@ syntax = "proto3"; -package slug; +package user; option go_package = "./gen"; -import "google/protobuf/timestamp.proto"; - service UserService { - rpc Check(CheckRequest) returns (CheckResponse); -} - -service UserSessions { - rpc GetSession(GetSessionRequest) returns (GetSessionsResponse); + rpc Check(CheckRequest) returns (CheckResponse); } enum AuthorizationResponse { @@ -25,20 +19,5 @@ message CheckRequest { message CheckResponse { AuthorizationResponse response = 1; -} - -message GetSessionRequest { - string identity = 1; -} - -message GetSessionsResponse { - repeated Detail details = 1; -} - -message Detail { - string forwarding_type = 1; - string slug = 2; - string user_id = 3; - bool active = 4; - google.protobuf.Timestamp started_at = 5; + string user = 2; } \ No newline at end of file