package main import ( "log" "github.com/gin-gonic/gin" "tencenthw/pkg/config" "tencenthw/pkg/handler" ) func main() { // Load configuration cfg, err := config.LoadConfig() if err != nil { log.Fatalf("Failed to load configuration: %v", err) } // Initialize services geminiService, err := service.NewGeminiService(cfg.GeminiAPIKey) if err != nil { log.Fatal(err) } defer geminiService.Close() ocrService := handler.NewOCRService( cfg.TencentSecretID, cfg.TencentSecretKey, geminiService, ) // Initialize handlers ocrHandler := handler.NewOCRHandler( cfg.TencentSecretID, cfg.TencentSecretKey, cfg.GeminiAPIKey, cfg.APIKey, ) rateHandler := handler.NewRateHandler( cfg.GeminiAPIKey, cfg.APIKey, ) uploadHandler := handler.NewUploadHandler( cfg.R2AccessKey, cfg.R2SecretKey, cfg.R2Bucket, cfg.R2Endpoint, cfg.R2CustomDomain, ocrService, geminiService, ) // Setup Gin router r := gin.Default() // Register routes r.POST("/ocr", ocrHandler.HandleOCR) r.POST("/rate", rateHandler.HandleRate) // upload file to server r.POST("/upload", uploadHandler.HandleUpload) // Start server if err := r.Run("localhost:8080"); err != nil { log.Fatalf("Failed to start server: %v", err) } }