package httpserver import ( "fmt" "log/slog" "github.com/SamuelTariku/FortuneBet-Backend/internal/services/authentication" customvalidator "github.com/SamuelTariku/FortuneBet-Backend/internal/web_server/validator" "github.com/bytedance/sonic" "github.com/gofiber/fiber/v2" ) type JwtConfig struct { JwtAccessKey string JwtAccessExpiry int } type App struct { fiber *fiber.App logger *slog.Logger port int authSvc *authentication.Service validator *customvalidator.CustomValidator JwtConfig JwtConfig } func NewApp( port int, validator *customvalidator.CustomValidator, authSvc *authentication.Service, logger *slog.Logger, JwtConfig JwtConfig, ) *App { app := fiber.New(fiber.Config{ CaseSensitive: true, DisableHeaderNormalizing: true, JSONEncoder: sonic.Marshal, JSONDecoder: sonic.Unmarshal, }) s := &App{ fiber: app, port: port, authSvc: authSvc, validator: validator, logger: logger, JwtConfig: JwtConfig, } s.initAppRoutes() return s } func (a *App) Run() error { return a.fiber.Listen(fmt.Sprintf(":%d", a.port)) }