2023-05-16 18:21:27 +00:00
|
|
|
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"
|
2024-09-25 14:22:57 +00:00
|
|
|
"heruvym/internal/utils/middleware"
|
2023-05-16 18:21:27 +00:00
|
|
|
"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()
|
|
|
|
}
|