diff options
| author | Kyren223 <ulmliad223@gmail.com> | 2024-10-24 18:13:39 +0300 |
|---|---|---|
| committer | Kyren223 <ulmliad223@gmail.com> | 2024-10-24 18:13:39 +0300 |
| commit | a7f743f035d0f0d14400027e4781cad76503085a (patch) | |
| tree | 31c021ef76e7ca0428c5bca6b2aa2b23697f4f4c /internal/server/api | |
| parent | 688668f6d34d4d962247bd5df60c3fca61185927 (diff) | |
refactor: server split into server, session and api
Diffstat (limited to 'internal/server/api')
| -rw-r--r-- | internal/server/api/api.go | 40 |
1 files changed, 40 insertions, 0 deletions
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 |
