package router import ( "downloader/internal/app/api/download" "github.com/go-chi/chi" "github.com/go-chi/chi/middleware" "net/http" "time" ) type router struct { internalRouter *chi.Mux } func NewRouter() *router { router := &router{internalRouter: chi.NewRouter()} router. setupMiddleware(). setupRoutes() return router } func (router *router) Run() { http.ListenAndServe(":3333", router.internalRouter) } func (router *router) RegisterApi() *chi.Mux { return router.internalRouter } func (router *router) setupMiddleware() *router { router.internalRouter.Use(middleware.Logger) router.internalRouter.Use(middleware.RequestID) router.internalRouter.Use(middleware.RealIP) router.internalRouter.Use(middleware.Recoverer) router.internalRouter.Use(middleware.Timeout(time.Second * 60)) return router } func (router *router) setupRoutes() *router { downloadApi := download.New() downloadApi.SetupDownloadApi(router.internalRouter) return router }