93 lines
2.3 KiB
Go
93 lines
2.3 KiB
Go
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)
|
||
}
|
||
}
|