41 lines
1.3 KiB
Go
41 lines
1.3 KiB
Go
package dual_check
|
|
|
|
import (
|
|
"time"
|
|
|
|
"cancerai.top/toolbox-server/internal/pkg/websocket"
|
|
"cancerai.top/toolbox-server/internal/store"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// Register 把 DualCheck 工具的所有路由注册到指定 RouterGroup
|
|
func Register(
|
|
group *gin.RouterGroup,
|
|
sessionStore store.SessionStore,
|
|
hub *websocket.Hub,
|
|
logger *zap.Logger,
|
|
ttlSeconds int,
|
|
maxTextLen int,
|
|
) {
|
|
ttl := time.Duration(ttlSeconds) * time.Second
|
|
|
|
svc := NewService(sessionStore, logger, ttl)
|
|
h := NewHandler(svc, hub, logger, maxTextLen)
|
|
ws := NewWSHandler(svc, hub, logger)
|
|
|
|
// REST API — 所有 session_id 走 POST body
|
|
group.POST("/create", h.Create) // 发起方创建会话
|
|
group.POST("/submit", h.Submit) // 发起方或参与者提交文本
|
|
group.POST("/join", h.Join) // 参与者加入(登记昵称)
|
|
group.POST("/resubmit", h.SetResubmit) // 发起方切换"允许重提交"开关
|
|
group.POST("/ignore-ws", h.SetIgnoreWs) // 发起方切换"忽略首尾空白"开关
|
|
group.POST("/end", h.EndSession) // 发起方主动结束会话
|
|
group.POST("/session", h.GetSession) // 拉全量状态
|
|
group.POST("/check", h.CheckSession) // 加入前预校验
|
|
|
|
// WebSocket 实时推送(带 role + nickname 查询参数)
|
|
group.GET("/ws", ws.Handle)
|
|
}
|