github.com/soulteary/pocket-bookcase@v0.0.0-20240428065142-0b5a9a0fc98a/internal/http/routes/api/v1/api.go (about) 1 package api_v1 2 3 import ( 4 "github.com/gin-gonic/gin" 5 "github.com/sirupsen/logrus" 6 "github.com/soulteary/pocket-bookcase/internal/dependencies" 7 "github.com/soulteary/pocket-bookcase/internal/model" 8 ) 9 10 type APIRoutes struct { 11 logger *logrus.Logger 12 deps *dependencies.Dependencies 13 loginHandler model.LegacyLoginHandler 14 } 15 16 func (r *APIRoutes) Setup(g *gin.RouterGroup) model.Routes { 17 // Account API handles authentication in each route 18 r.handle(g, "/auth", NewAuthAPIRoutes(r.logger, r.deps, r.loginHandler)) 19 r.handle(g, "/bookmarks", NewBookmarksAPIRoutes(r.logger, r.deps)) 20 r.handle(g, "/tags", NewTagsPIRoutes(r.logger, r.deps)) 21 22 return r 23 } 24 25 func (s *APIRoutes) handle(g *gin.RouterGroup, path string, routes model.Routes) { 26 group := g.Group(path) 27 routes.Setup(group) 28 } 29 30 func NewAPIRoutes(logger *logrus.Logger, deps *dependencies.Dependencies, loginHandler model.LegacyLoginHandler) *APIRoutes { 31 return &APIRoutes{ 32 logger: logger, 33 deps: deps, 34 loginHandler: loginHandler, 35 } 36 }