tencent_ocr/.history/cmd/main_20250115155220.go
2025-01-15 16:01:18 +08:00

77 lines
1.5 KiB
Go

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 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,
)
// 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)
}
}
// Initialize services
geminiService, err := service.NewGeminiService(config.GeminiAPIKey)
if err != nil {
log.Fatal(err)
}
defer geminiService.Close()
ocrService := handler.NewOCRService(
config.TencentSecretID,
config.TencentSecretKey,
geminiService,
)
uploadHandler := handler.NewUploadHandler(
config.AccessKey,
config.SecretKey,
config.Bucket,
config.Endpoint,
config.CustomDomain,
ocrService,
geminiService,
)
// Setup routes
router.POST("/upload", uploadHandler.HandleMultiUpload)