feat(admin-panel): update some of the ui feat(oauth-screen): make oauth success screen match the rest of the app
64 lines
2 KiB
Go
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")
|
|
})
|
|
}
|