From a7f743f035d0f0d14400027e4781cad76503085a Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Thu, 24 Oct 2024 18:13:39 +0300 Subject: refactor: server split into server, session and api --- internal/server/api/api.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 internal/server/api/api.go (limited to 'internal/server/api') diff --git a/internal/server/api/api.go b/internal/server/api/api.go new file mode 100644 index 0000000..4596cdb --- /dev/null +++ b/internal/server/api/api.go @@ -0,0 +1,40 @@ +package api + +import ( + "context" + "strings" + + "github.com/kyren223/eko/internal/data" + "github.com/kyren223/eko/internal/packet" + "github.com/kyren223/eko/internal/server/session" + "github.com/kyren223/eko/pkg/assert" +) + +func SendMessage(ctx context.Context, request *packet.SendMessage) packet.Payload { + sess, ok := session.FromContext(ctx) + assert.Assert(ok, "context in process packet should always have a session") + + content := strings.TrimSpace(request.Content) + if content == "" { + return &packet.ErrorMessage{Error: "message content must not be blank"} + } + + node := sess.Manager().Node() + message := data.Message{ + Id: node.Generate(), + SenderId: sess.ID(), + FrequencyId: node.Generate(), // TODO: replace with actual ID + NetworkId: node.Generate(), // TODO: replace with actual ID + Contents: content, + } + + messages = append(messages, message) + + payload := &packet.Messages{Messages: messages} + pkt := packet.NewPacket(packet.NewMsgPackEncoder(payload)) + sess.WriteQueue <- pkt + + return packet.NewOkMessage() +} + +var messages []data.Message -- cgit v1.3.1