package main import ( "log" "sdk-generator/internal/config" "sdk-generator/internal/handler" "sdk-generator/internal/push" "sdk-generator/internal/service" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/cors" "github.com/gofiber/fiber/v2/middleware/logger" "github.com/gofiber/fiber/v2/middleware/recover" "github.com/gofiber/template/html/v2" ) func main() { // 加载配置 cfg := config.Load() // 创建服务 sdkService := service.NewSDKGeneratorService(cfg) // 创建 Handler sdkHandler := handler.NewSDKHandler(sdkService) pageHandler := handler.NewPageHandler() // 配置模板引擎 engine := html.New("./web/templates", ".html") engine.Reload(true) // 开发时热重载 // 创建 Fiber 应用 app := fiber.New(fiber.Config{ AppName: "SDK Generator API", Views: engine, Prefork: false, ServerHeader: "Fiber", BodyLimit: 10 * 1024 * 1024, // 10MB }) // 全局中间件 app.Use(recover.New()) app.Use(logger.New(logger.Config{ Format: "[${time}] ${status} - ${method} ${path} ${latency}\n", })) app.Use(cors.New(cors.Config{ AllowOrigins: "*", AllowMethods: "GET,POST,PUT,DELETE,OPTIONS", AllowHeaders: "Content-Type,Authorization", })) // 健康检查 app.Get("/health", func(c *fiber.Ctx) error { return c.JSON(fiber.Map{ "status": "ok", "app": "SDK Generator API", }) }) // 静态文件 app.Static("/static", "./web/static") // 页面路由 app.Get("/", pageHandler.Index) // API 路由 api := app.Group("/api/v1") // 上传文档生成 SDK api.Post("/generate", sdkHandler.GenerateSDK) // 查询生成任务状态 api.Get("/tasks/:task_id", sdkHandler.GetTaskStatus) // 下载生成的 SDK api.Get("/tasks/:task_id/download", sdkHandler.DownloadSDK) // 列出所有任务 api.Get("/tasks", sdkHandler.ListTasks) // 删除任务 api.Delete("/tasks/:task_id", sdkHandler.DeleteTask) //初始化代码仓库客户端 _, err := push.NewGiteaClient(cfg.GiteaUrl, cfg.GiteaToken) if err != nil { log.Fatalf("Failed to initialize Gitea client: %v", err) } // 启动服务请访问以下链接获取接口“生成”的接口定义信息:https://api.apifox.cn/temp-links/api/488609283?t=cb680e83-e054-41e5-a167-715db384e1d1 if err := app.Listen(":" + cfg.Port); err != nil { log.Fatalf("Failed to start server: %v", err) } }