/ โโโ cmd โโโ pkg (or internal) โ โโโ server โ โ โโโ http โ โ โ โโโ handlers.go โ โ โ โโโ requests.go โ โ โ โโโ responses.go โ โ โ โโโ server.go โ โโโ creating โ โโโ fetching โ โโโ incrementing โ โโโ storage โ โโโ errors โ โโโ counter.go โ โโโ user.go โโโ โฆ package http import โฆ func NewServer( fetchService fetching.Service, createService creating.Service, incrementService incrementing.Service, ) (http.Handler, error) { r := gin.New() r.Use(gin.Logger(), gin.Recovery()) // Auth (JWT) handler initialization authMiddleware, _ := jwt.NewGinMiddleware(fetchService) r.POST("/users/register", createUserHandlerBuilder(createService)) r.POST("/users/login", authMiddleware.LoginHandler) auth := r.Group("") auth.Use(authMiddleware.MiddlewareFunc()) auth.GET("/users/:userID", getUserHandlerBuilder(fetchService)) auth.POST("/counters", createCounterHandlerBuilder(createService)) auth.GET("/counters/:counterID", getCounterHandlerBuilder(fetchService)) auth.POST("/counters/increment", incrementCounterHandlerBuilder(fetchService, incrementService)) return r, nil }