vibe-proxy/backend/internal/api/server_routes.go
Alois f6ed4f1e2e
feat(admin-panel): update url
feat(admin-panel): update some of the ui
feat(oauth-screen): make oauth success screen match the rest of the app
2026-08-30 12:55:20 +02:00

64 lines
2 KiB
Go

package api
import (
"net/http"
"github.com/gin-gonic/gin"
managementHandlers "github.com/router-for-me/CLIProxyAPI/v7/internal/api/handlers/management"
"github.com/router-for-me/CLIProxyAPI/v7/sdk/api/handlers/openai"
)
func (s *Server) setupRoutes() {
healthzHandler := func(c *gin.Context) {
if c.Request.Method == http.MethodHead {
c.Status(http.StatusOK)
return
}
c.JSON(http.StatusOK, gin.H{"status": "ok"})
}
s.engine.GET("/healthz", healthzHandler)
s.engine.HEAD("/healthz", healthzHandler)
s.engine.GET("/admin", s.serveManagementControlPanel)
s.engine.HEAD("/admin", s.serveManagementControlPanel)
s.engine.GET("/admin/oauth-success", s.serveManagementControlPanel)
s.engine.HEAD("/admin/oauth-success", s.serveManagementControlPanel)
s.engine.GET("/management-assets/*filepath", s.serveManagementAsset)
s.engine.HEAD("/management-assets/*filepath", s.serveManagementAsset)
openAIHandlers := openai.NewOpenAIAPIHandler(s.handlers)
responsesHandlers := openai.NewOpenAIResponsesAPIHandler(s.handlers)
v1 := s.engine.Group("/v1")
v1.Use(AuthMiddleware(s.accessManager))
{
v1.GET("/models", openAIHandlers.OpenAIModels)
v1.POST("/chat/completions", openAIHandlers.ChatCompletions)
v1.GET("/responses", responsesHandlers.ResponsesWebsocket)
v1.POST("/responses", responsesHandlers.Responses)
}
s.engine.GET("/", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "Vibe Proxy",
"endpoints": []string{
"GET /v1/models",
"POST /v1/chat/completions",
"GET /v1/responses",
"POST /v1/responses",
},
})
})
s.engine.GET("/codex/callback", func(c *gin.Context) {
code := c.Query("code")
state := c.Query("state")
errStr := c.Query("error")
if errStr == "" {
errStr = c.Query("error_description")
}
if state != "" {
_, _ = managementHandlers.WriteOAuthCallbackFileForPendingSession(s.cfg.AuthDir, "codex", state, code, errStr)
}
c.Redirect(http.StatusSeeOther, "/admin/oauth-success")
})
}