Files
dbis_core/gateway/go/main.go
2026-03-02 12:14:07 -08:00

54 lines
1.1 KiB
Go

package main
import (
"log"
"solacenet-gateway/cache"
"solacenet-gateway/config"
"solacenet-gateway/handlers"
"solacenet-gateway/middleware"
"github.com/gin-gonic/gin"
)
func main() {
cfg := config.Load()
// Initialize Redis cache
redisCache, err := cache.New(cfg.RedisURL)
if err != nil {
log.Printf("Warning: Redis not available, caching disabled: %v", err)
redisCache = nil
}
defer func() {
if redisCache != nil {
redisCache.Close()
}
}()
// Set up Gin router
if cfg.LogLevel == "production" {
gin.SetMode(gin.ReleaseMode)
}
router := gin.Default()
// Middleware
router.Use(middleware.AuthMiddleware(cfg))
if redisCache != nil {
router.Use(middleware.CapabilityCheckMiddleware(cfg, redisCache))
}
router.Use(middleware.RateLimitMiddleware())
// Health check
router.GET("/health", handlers.HealthHandler)
// Proxy handler for backend services
router.Any("/api/*path", handlers.ProxyHandler(cfg))
// Start server
log.Printf("SolaceNet Gateway starting on port %s", cfg.Port)
if err := router.Run(":" + cfg.Port); err != nil {
log.Fatal("Failed to start server:", err)
}
}