| package handler |
|
|
| import ( |
| "aurora/httpclient/bogdanfinn" |
| "aurora/internal/accounts" |
| "aurora/internal/chatgpt" |
| "aurora/internal/config" |
| "aurora/middlewares" |
|
|
| "github.com/gin-gonic/gin" |
| ) |
|
|
| func optionsHandler(c *gin.Context) { |
| c.Header("Access-Control-Allow-Origin", "*") |
| c.Header("Access-Control-Allow-Methods", "POST") |
| c.Header("Access-Control-Allow-Headers", "*") |
| c.JSON(200, gin.H{ |
| "message": "pong", |
| }) |
| } |
|
|
| func RegisterRouter(accountPool *accounts.Pool, cfg *config.Config) *gin.Engine { |
| chatHandler := NewChatHandler(accountPool, cfg) |
| imageHandler := NewImageHandler(accountPool, cfg) |
| audioHandler := NewAudioHandler(accountPool, cfg) |
| authHandler := NewAuthHandler(accountPool) |
| modelsHandler := NewModelsHandler() |
|
|
| |
| proxyUrl := "" |
| client := bogdanfinn.NewStdClient() |
| chatgpt.GetDpl(client, proxyUrl) |
|
|
| router := gin.Default() |
| router.Use(middlewares.Cors) |
|
|
| router.GET("/", func(c *gin.Context) { c.JSON(200, gin.H{"message": "Hello, world!"}) }) |
| router.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{"message": "pong"}) }) |
|
|
| router.POST("/auth/session", authHandler.Session) |
| router.POST("/auth/refresh", authHandler.Refresh) |
|
|
| router.OPTIONS("/v1/chat/completions", optionsHandler) |
| router.OPTIONS("/v1/models", optionsHandler) |
| router.OPTIONS("/v1/responses", optionsHandler) |
| router.OPTIONS("/v1/images/generations", optionsHandler) |
| router.OPTIONS("/v1/images/edits", optionsHandler) |
| router.OPTIONS("/v1/images/variations", optionsHandler) |
| router.OPTIONS("/v1/files", optionsHandler) |
| router.OPTIONS("/v1/audio/speech", optionsHandler) |
| router.OPTIONS("/v1/audio/transcriptions", optionsHandler) |
| router.OPTIONS("/v1/audio/translations", optionsHandler) |
|
|
| authGroup := router.Group("").Use(middlewares.Authorization) |
| authGroup.POST("/v1/chat/completions", chatHandler.Nightmare) |
| authGroup.POST("/v1/responses", chatHandler.Responses) |
| authGroup.POST("/v1/files", chatHandler.Files) |
| authGroup.GET("/v1/models", modelsHandler.ListModels) |
| authGroup.POST("/backend-api/conversation", chatHandler.ChatGPTConversation) |
| authGroup.POST("/v1/images/generations", imageHandler.Generations) |
| authGroup.POST("/v1/images/edits", imageHandler.Edits) |
| authGroup.POST("/v1/images/variations", imageHandler.Variations) |
| authGroup.POST("/v1/audio/speech", audioHandler.TTS) |
| authGroup.POST("/v1/audio/transcriptions", audioHandler.Transcriptions) |
| authGroup.POST("/v1/audio/translations", audioHandler.Translations) |
|
|
| return router |
| } |
|
|