Files
xly/server/cmd/xly-server/main.go

45 lines
1.0 KiB
Go

package main
import (
"log"
"net/http"
"time"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
"github.com/joho/godotenv"
"xly/server/internal/config"
"xly/server/internal/handler"
"xly/server/internal/service"
)
func main() {
if err := godotenv.Load(".env"); err != nil {
log.Printf("skip .env load: %v", err)
}
cfg := config.Load()
router := gin.New()
router.Use(gin.Logger(), gin.Recovery())
if err := router.SetTrustedProxies(nil); err != nil {
log.Fatalf("set trusted proxies: %v", err)
}
router.Use(cors.New(cors.Config{
AllowOrigins: cfg.AllowedOrigins,
AllowMethods: []string{http.MethodGet, http.MethodPost, http.MethodOptions},
AllowHeaders: []string{"Origin", "Content-Type", "Authorization"},
MaxAge: 12 * time.Hour,
}))
aiService := service.NewAIService(cfg)
httpHandler := handler.NewHTTPHandler(aiService)
httpHandler.Register(router)
address := ":" + cfg.Port
log.Printf("xly server listening on %s", address)
if err := router.Run(address); err != nil {
log.Fatalf("start gin server: %v", err)
}
}