package proxy import ( "net/http" "opencatd-open/internal/dao" "time" "github.com/gin-gonic/gin" ) // HandleChat handles POST /v1/chat/completions func (g *Gateway) HandleChat(c *gin.Context) { req, err := g.ParseRequest(c, "chat") if err != nil { g.writeError(c, http.StatusBadRequest, err.Error()) return } g.Dispatch(c, req) } // HandleMessages handles POST /v1/messages func (g *Gateway) HandleMessages(c *gin.Context) { req, err := g.ParseRequest(c, "messages") if err != nil { g.writeError(c, http.StatusBadRequest, err.Error()) return } g.Dispatch(c, req) } // HandleResponses handles POST /v1/responses func (g *Gateway) HandleResponses(c *gin.Context) { req, err := g.ParseRequest(c, "responses") if err != nil { g.writeError(c, http.StatusBadRequest, err.Error()) return } g.Dispatch(c, req) } // HandleModels handles GET /v1/models func (g *Gateway) HandleModels(c *gin.Context) { modelDAO := dao.NewModelDAO(g.db) models, _, err := modelDAO.List(1000, 0) if err != nil { g.writeError(c, http.StatusInternalServerError, "failed to list models") return } now := time.Now().Unix() data := make([]gin.H, 0, len(models)) for _, m := range models { if !m.Enabled { continue } data = append(data, gin.H{ "id": m.Name, "object": "model", "created": now, "owned_by": "opencatd-open", }) } c.JSON(http.StatusOK, gin.H{ "object": "list", "data": data, }) }