MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / setupRoutes

Method setupRoutes

internal/api/server.go:420–557  ·  view source on GitHub ↗

setupRoutes configures the API routes for the server. It defines the endpoints and associates them with their respective handlers.

()

Source from the content-addressed store, hash-verified

418// setupRoutes configures the API routes for the server.
419// It defines the endpoints and associates them with their respective handlers.
420func (s *Server) setupRoutes() {
421 healthzHandler := func(c *gin.Context) {
422 if c.Request.Method == http.MethodHead {
423 c.Status(http.StatusOK)
424 return
425 }
426
427 c.JSON(http.StatusOK, gin.H{"status": "ok"})
428 }
429 s.engine.GET("/healthz", healthzHandler)
430 s.engine.HEAD("/healthz", healthzHandler)
431
432 s.engine.GET("/management.html", s.serveManagementControlPanel)
433 openaiHandlers := openai.NewOpenAIAPIHandler(s.handlers)
434 geminiHandlers := gemini.NewGeminiAPIHandler(s.handlers)
435 claudeCodeHandlers := claude.NewClaudeCodeAPIHandler(s.handlers)
436 openaiResponsesHandlers := openai.NewOpenAIResponsesAPIHandler(s.handlers)
437
438 // OpenAI compatible API routes
439 v1 := s.engine.Group("/v1")
440 v1.Use(AuthMiddleware(s.accessManager))
441 {
442 v1.GET("/models", s.unifiedModelsHandler(openaiHandlers, claudeCodeHandlers))
443 v1.POST("/chat/completions", openaiHandlers.ChatCompletions)
444 v1.POST("/completions", openaiHandlers.Completions)
445 v1.POST("/images/generations", openaiHandlers.ImagesGenerations)
446 v1.POST("/images/edits", openaiHandlers.ImagesEdits)
447 v1.POST("/videos", openaiHandlers.XAIVideosGenerations)
448 v1.POST("/videos/generations", openaiHandlers.XAIVideosGenerations)
449 v1.POST("/videos/edits", openaiHandlers.XAIVideosEdits)
450 v1.POST("/videos/extensions", openaiHandlers.XAIVideosExtensions)
451 v1.GET("/videos/:request_id", openaiHandlers.XAIVideosRetrieve)
452 v1.POST("/messages", claudeCodeHandlers.ClaudeMessages)
453 v1.POST("/messages/count_tokens", claudeCodeHandlers.ClaudeCountTokens)
454 v1.GET("/responses", openaiResponsesHandlers.ResponsesWebsocket)
455 v1.POST("/responses", openaiResponsesHandlers.Responses)
456 v1.POST("/responses/compact", openaiResponsesHandlers.Compact)
457 }
458
459 openaiV1 := s.engine.Group("/openai/v1")
460 openaiV1.Use(AuthMiddleware(s.accessManager))
461 {
462 openaiV1.POST("/videos", openaiHandlers.VideosCreate)
463 openaiV1.GET("/videos/:video_id/content", openaiHandlers.VideosContent)
464 openaiV1.GET("/videos/:video_id", openaiHandlers.VideosRetrieve)
465 }
466
467 // Codex CLI direct route aliases (chatgpt_base_url compatible)
468 codexDirect := s.engine.Group("/backend-api/codex")
469 codexDirect.Use(AuthMiddleware(s.accessManager))
470 {
471 codexDirect.GET("/responses", openaiResponsesHandlers.ResponsesWebsocket)
472 codexDirect.POST("/responses", openaiResponsesHandlers.Responses)
473 codexDirect.POST("/responses/compact", openaiResponsesHandlers.Compact)
474 }
475
476 // Gemini compatible API routes
477 v1beta := s.engine.Group("/v1beta")

Callers 1

NewServerFunction · 0.95

Calls 11

unifiedModelsHandlerMethod · 0.95
geminiModelsHandlerMethod · 0.95
geminiGetHandlerMethod · 0.95
NewOpenAIAPIHandlerFunction · 0.92
NewGeminiAPIHandlerFunction · 0.92
NewClaudeCodeAPIHandlerFunction · 0.92
AuthMiddlewareFunction · 0.85
QueryMethod · 0.80
HeaderMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected