diff --git a/internal/photos/api/account.go b/internal/photos/api/account.go index 7a61f73..512516f 100644 --- a/internal/photos/api/account.go +++ b/internal/photos/api/account.go @@ -85,3 +85,10 @@ func (s *Service) Logout(c *gin.Context) { "status": "success", }) } + +func (s *Service) AccountInit() { + ac := s.Gin.Group("/account") + ac.POST("/signup", s.Signup) + ac.POST("/login", s.Login) + ac.GET("/logout", s.RequireAuthToken, s.Logout) +} diff --git a/internal/photos/api/file.go b/internal/photos/api/file.go index 6377be0..d9430fa 100644 --- a/internal/photos/api/file.go +++ b/internal/photos/api/file.go @@ -260,3 +260,14 @@ func (s *Service) FileAnalyze(c *gin.Context) { "exif": entries, }) } + +func (s *Service) FileInit() { + file := s.Gin.Group("/file") + file.Use(s.RequireSession) + file.POST("", s.FileCreate) + file.HEAD("/:checksum", s.FileExists) + file.GET("/:checksum", s.FileGet) + file.POST("/chunk", s.FileCreateChunk) + file.HEAD("/chunk/:checksum", s.FileChunkExists) + file.GET("/analyze/:checksum", s.FileAnalyze) +} diff --git a/internal/photos/api/main.go b/internal/photos/api/main.go index 14d4af2..4b88f94 100644 --- a/internal/photos/api/main.go +++ b/internal/photos/api/main.go @@ -40,32 +40,15 @@ func New(config *ServiceConfig) *Service { } func (s *Service) SetupRoutes() { - s.Gin.Use(gin.Logger()) - s.Gin.Use(s.Recovery) - s.Gin.Use(s.RequireBody) + s.Gin.Use( + gin.Logger(), + s.Recovery, + s.RequireBody, + ) - ac := s.Gin.Group("/account") - ac.POST("/signup", s.Signup) - ac.POST("/login", s.Login) - ac.GET("/logout", s.RequireAuthToken, s.Logout) - - s.Gin.GET("/me", s.RequireSession, func(c *gin.Context) { - c.JSON(http.StatusOK, gin.H{ - "status": "success", - "user": s.CurrentSession(c).Account.Login, - }) - }) - - file := s.Gin.Group("/file") - file.Use(s.RequireSession) - file.POST("", s.FileCreate) - file.HEAD("/:checksum", s.FileExists) - file.GET("/:checksum", s.FileGet) - - file.POST("/chunk", s.FileCreateChunk) - file.HEAD("/chunk/:checksum", s.FileChunkExists) - - file.GET("/analyze/:checksum", s.FileAnalyze) + s.AccountInit() + s.MeInit() + s.FileInit() s.Gin.NoRoute(func(c *gin.Context) { s.Error(c, http.StatusNotFound, photoserrors.ErrReqNotFound) diff --git a/internal/photos/api/me.go b/internal/photos/api/me.go new file mode 100644 index 0000000..ace2b0f --- /dev/null +++ b/internal/photos/api/me.go @@ -0,0 +1,18 @@ +package api + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +func (s *Service) Me(c *gin.Context) { + c.JSON(http.StatusOK, gin.H{ + "status": "success", + "user": s.CurrentSession(c).Account.Login, + }) +} + +func (s *Service) MeInit() { + s.Gin.GET("/me", s.RequireSession, s.Me) +}