refactor!: Use gin router instead chi router
- Removed chi dependencies - Updated router registration logic
This commit is contained in:
@@ -1,107 +0,0 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"git.ostiwe.com/ostiwe-com/status/modules/jwt"
|
||||
"git.ostiwe.com/ostiwe-com/status/modules/log"
|
||||
http2 "git.ostiwe.com/ostiwe-com/status/pkg/http"
|
||||
"git.ostiwe.com/ostiwe-com/status/repository"
|
||||
"git.ostiwe.com/ostiwe-com/status/router/controller"
|
||||
"git.ostiwe.com/ostiwe-com/status/router/midlleware"
|
||||
"git.ostiwe.com/ostiwe-com/status/transform"
|
||||
"github.com/go-andiamo/chioas"
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/go-chi/jwtauth/v5"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
serviceRepository repository.Service
|
||||
}
|
||||
|
||||
func (c *Controller) New() controller.Controller {
|
||||
return &Controller{
|
||||
serviceRepository: repository.NewServiceRepository(),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Controller) Group(r chi.Router) {
|
||||
c.public(r)
|
||||
c.internal(r)
|
||||
}
|
||||
|
||||
func (c *Controller) public(r chi.Router) {
|
||||
r.Get("/api/public/service", c.GetAllServicesPublic)
|
||||
}
|
||||
|
||||
func (c *Controller) internal(r chi.Router) {
|
||||
r.Group(func(r chi.Router) {
|
||||
r.Use(
|
||||
jwtauth.Verifier(jwt.TokenAuth),
|
||||
jwtauth.Authenticator(jwt.TokenAuth),
|
||||
midlleware.SetUserFromJWT,
|
||||
)
|
||||
|
||||
r.Get("/api/v1/service", c.GetAllServices)
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func (c *Controller) GetAllServicesPublic(w http.ResponseWriter, r *http.Request) {
|
||||
items, err := c.serviceRepository.All(r.Context(), -1, 0, true)
|
||||
if err != nil {
|
||||
log.Global.Get(log.SERVER).Error(err)
|
||||
|
||||
writeErr := http2.NewResponseErrBuilder().
|
||||
WithMessage("Fetch service error").
|
||||
WithStatusCode(http.StatusInternalServerError).
|
||||
Send(w, r)
|
||||
if writeErr != nil {
|
||||
log.Global.Get(log.SERVER).Error(writeErr)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
err = http2.JSON(w, transform.PublicServices(items...), http.StatusOK)
|
||||
if err != nil {
|
||||
log.Global.Get(log.SERVER).Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Controller) GetAllServices(w http.ResponseWriter, r *http.Request) {
|
||||
limit, offset, errReady := http2.ExtractLimitOffset(r)
|
||||
if errReady != nil {
|
||||
err := errReady.Send(w)
|
||||
if err != nil {
|
||||
log.Global.Get(log.SERVER).Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
items, err := c.serviceRepository.All(r.Context(), limit, offset, false)
|
||||
if err != nil {
|
||||
log.Global.Get(log.SERVER).Error(err)
|
||||
|
||||
writeErr := http2.NewResponseErrBuilder().
|
||||
WithMessage("Fetch service error").
|
||||
WithStatusCode(http.StatusInternalServerError).
|
||||
Send(w, r)
|
||||
if writeErr != nil {
|
||||
log.Global.Get(log.SERVER).Error(writeErr)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
err = http2.JSON(w, items, http.StatusOK)
|
||||
if err != nil {
|
||||
log.Global.Get(log.SERVER).Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Controller) Documentate() (*chioas.Paths, *chioas.Components) {
|
||||
return nil, nil
|
||||
}
|
||||
60
router/controller/service/get.go
Normal file
60
router/controller/service/get.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"git.ostiwe.com/ostiwe-com/status/modules/jwt"
|
||||
"git.ostiwe.com/ostiwe-com/status/modules/log"
|
||||
http2 "git.ostiwe.com/ostiwe-com/status/pkg/http"
|
||||
"git.ostiwe.com/ostiwe-com/status/repository"
|
||||
"git.ostiwe.com/ostiwe-com/status/router/controller"
|
||||
"git.ostiwe.com/ostiwe-com/status/router/midlleware"
|
||||
"git.ostiwe.com/ostiwe-com/status/transform"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type GetServices struct {
|
||||
serviceRepository repository.Service
|
||||
}
|
||||
|
||||
func (g *GetServices) New() controller.Controller {
|
||||
return &GetServices{
|
||||
serviceRepository: repository.NewServiceRepository(),
|
||||
}
|
||||
}
|
||||
|
||||
func (g *GetServices) Handler() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
items, err := g.serviceRepository.All(c.Request.Context(), -1, 0, true)
|
||||
if err != nil {
|
||||
log.Global.Get(log.SERVER).Error(err)
|
||||
|
||||
writeErr := http2.NewResponseErrBuilder().
|
||||
WithMessage("Fetch service error").
|
||||
WithStatusCode(http.StatusInternalServerError).
|
||||
Send(c)
|
||||
if writeErr != nil {
|
||||
log.Global.Get(log.SERVER).Error(writeErr)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, transform.PublicServices(items...))
|
||||
}
|
||||
}
|
||||
|
||||
func (g *GetServices) Method() string {
|
||||
return http.MethodGet
|
||||
}
|
||||
|
||||
func (g *GetServices) Path() string {
|
||||
return "/api/v1/services"
|
||||
}
|
||||
|
||||
func (g *GetServices) Middlewares() []gin.HandlerFunc {
|
||||
return []gin.HandlerFunc{
|
||||
jwt.AuthMiddleware.MiddlewareFunc(),
|
||||
midlleware.SetUserFromJWT(),
|
||||
}
|
||||
}
|
||||
51
router/controller/service/public_get.go
Normal file
51
router/controller/service/public_get.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"git.ostiwe.com/ostiwe-com/status/modules/log"
|
||||
http2 "git.ostiwe.com/ostiwe-com/status/pkg/http"
|
||||
"git.ostiwe.com/ostiwe-com/status/repository"
|
||||
"git.ostiwe.com/ostiwe-com/status/router/controller"
|
||||
"git.ostiwe.com/ostiwe-com/status/transform"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type PublicGetServicesController struct {
|
||||
serviceRepository repository.Service
|
||||
}
|
||||
|
||||
func (p *PublicGetServicesController) New() controller.Controller {
|
||||
return &PublicGetServicesController{
|
||||
serviceRepository: repository.NewServiceRepository(),
|
||||
}
|
||||
}
|
||||
|
||||
func (p *PublicGetServicesController) Handler() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
items, err := p.serviceRepository.All(c.Request.Context(), -1, 0, true)
|
||||
if err != nil {
|
||||
log.Global.Get(log.SERVER).Error(err)
|
||||
|
||||
writeErr := http2.NewResponseErrBuilder().
|
||||
WithMessage("Fetch service error").
|
||||
WithStatusCode(http.StatusInternalServerError).
|
||||
Send(c)
|
||||
if writeErr != nil {
|
||||
log.Global.Get(log.SERVER).Error(writeErr)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, transform.PublicServices(items...))
|
||||
}
|
||||
}
|
||||
|
||||
func (p *PublicGetServicesController) Method() string {
|
||||
return http.MethodGet
|
||||
}
|
||||
|
||||
func (p *PublicGetServicesController) Path() string {
|
||||
return "/api/v1/public/services"
|
||||
}
|
||||
Reference in New Issue
Block a user