refactor: unify all C2S commands through POST /messages

All client-to-server commands now go through POST /api/v1/messages
with a 'command' field. The server dispatches by command type:

- PRIVMSG/NOTICE: send message to channel or user
- JOIN: join channel (creates if needed)
- PART: leave channel
- NICK: change nickname
- TOPIC: set channel topic
- PING: keepalive (returns PONG)

Removed separate routes:
- POST /channels/join
- DELETE /channels/{channel}
- POST /register (renamed to POST /session)
- GET /channels/all (moved to GET /channels)

Added DB methods: ChangeNick, SetTopic
This commit is contained in:
clawbot
2026-02-10 17:53:08 -08:00
parent f7776f8d3f
commit 0ee3fd78d2
3 changed files with 172 additions and 99 deletions

View File

@@ -52,18 +52,16 @@ func (s *Server) SetupRoutes() {
// API v1
s.router.Route("/api/v1", func(r chi.Router) {
r.Get("/server", s.h.HandleServerInfo())
r.Post("/register", s.h.HandleRegister())
r.Post("/session", s.h.HandleCreateSession())
// Unified state and message endpoints
r.Get("/state", s.h.HandleState())
r.Get("/messages", s.h.HandleGetMessages())
r.Post("/messages", s.h.HandleSendMessage())
r.Post("/messages", s.h.HandleSendCommand())
r.Get("/history", s.h.HandleGetHistory())
// Channels
r.Get("/channels/all", s.h.HandleListAllChannels())
r.Post("/channels/join", s.h.HandleJoinChannel())
r.Delete("/channels/{channel}", s.h.HandlePartChannel())
r.Get("/channels", s.h.HandleListAllChannels())
r.Get("/channels/{channel}/members", s.h.HandleChannelMembers())
})