package app import ( "github.com/gofiber/contrib/fiberzap" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/cors" "github.com/gofiber/fiber/v2/middleware/recover" "go.uber.org/zap" "heruvym/dal/mongo" "heruvym/internal/utils/middleware" "heruvym/service" ) type AccountHTTP struct { fiber *fiber.App } func NewAccountHTTP(dal *mongo.DAL, logger *zap.Logger) *AccountHTTP { srv := fiber.New(fiber.Config{ AppName: "Heryvum Account", ErrorHandler: fiber.DefaultErrorHandler, }) srv.Use( recover.New(recover.Config{EnableStackTrace: true}), fiberzap.New(fiberzap.Config{Logger: logger}), middleware.Jwt, cors.New(cors.ConfigDefault), ) return &AccountHTTP{fiber: srv} } // StartTLS - запускает http сервер func (srv *AccountHTTP) StartTLS(address, certFile, keyFile string) error { return srv.fiber.ListenTLS(address, certFile, keyFile) } func (srv *AccountHTTP) Start(address string) error { return srv.fiber.Listen(address) } func (srv *AccountHTTP) Register(routes ...service.Route) { for _, route := range routes { srv.fiber.Add(route.Method, route.Path, route.Handler).Name(route.Name) } } // Stop - останавливает http сервер func (srv *AccountHTTP) Stop() error { return srv.fiber.Shutdown() }