github.com/ngocphuongnb/tetua@v0.0.7-alpha/packages/fiberserver/group.go (about)

     1  package fiberserver
     2  
     3  import (
     4  	"github.com/gofiber/fiber/v2"
     5  	"github.com/ngocphuongnb/tetua/app/server"
     6  )
     7  
     8  type Group struct {
     9  	*fiber.App
    10  	FGroup      *fiber.Group
    11  	middlewares []server.Handler
    12  }
    13  
    14  func (g *Group) Use(handler server.Handler) {
    15  	g.middlewares = append(g.middlewares, handler)
    16  }
    17  
    18  func (g *Group) Group(prefix string, handlers ...server.Handler) server.Group {
    19  	var fiberHandlers []fiber.Handler
    20  
    21  	for _, handler := range handlers {
    22  		fiberHandlers = append(fiberHandlers, func(c *fiber.Ctx) error {
    23  			return handler(createContext(c))
    24  		})
    25  	}
    26  
    27  	gg := g.FGroup.Group(prefix, fiberHandlers...).(*fiber.Group)
    28  
    29  	return &Group{
    30  		FGroup:      gg,
    31  		App:         g.App,
    32  		middlewares: g.middlewares,
    33  	}
    34  }
    35  
    36  func (g *Group) Get(path string, handler server.Handler, authConfigs ...*server.AuthConfig) {
    37  	authConfigs = append(authConfigs, &server.AuthConfig{Action: ""})
    38  	g.FGroup.Get(path, transformHandlers([]server.Handler{handler}, g.middlewares...)...).Name(authConfigs[0].Action)
    39  }
    40  
    41  func (g *Group) Post(path string, handler server.Handler, authConfigs ...*server.AuthConfig) {
    42  	authConfigs = append(authConfigs, &server.AuthConfig{Action: ""})
    43  	g.FGroup.Post(path, transformHandlers([]server.Handler{handler}, g.middlewares...)...).Name(authConfigs[0].Action)
    44  }
    45  
    46  func (g *Group) Put(path string, handler server.Handler, authConfigs ...*server.AuthConfig) {
    47  	authConfigs = append(authConfigs, &server.AuthConfig{Action: ""})
    48  	g.FGroup.Put(path, transformHandlers([]server.Handler{handler}, g.middlewares...)...).Name(authConfigs[0].Action)
    49  }
    50  
    51  func (g *Group) Delete(path string, handler server.Handler, authConfigs ...*server.AuthConfig) {
    52  	authConfigs = append(authConfigs, &server.AuthConfig{Action: ""})
    53  	g.FGroup.Delete(path, transformHandlers([]server.Handler{handler}, g.middlewares...)...).Name(authConfigs[0].Action)
    54  }
    55  
    56  func (g *Group) Patch(path string, handler server.Handler, authConfigs ...*server.AuthConfig) {
    57  	authConfigs = append(authConfigs, &server.AuthConfig{Action: ""})
    58  	g.FGroup.Patch(path, transformHandlers([]server.Handler{handler}, g.middlewares...)...).Name(authConfigs[0].Action)
    59  }
    60  
    61  func (g *Group) Options(path string, handler server.Handler, authConfigs ...*server.AuthConfig) {
    62  	authConfigs = append(authConfigs, &server.AuthConfig{Action: ""})
    63  	g.FGroup.Options(path, transformHandlers([]server.Handler{handler}, g.middlewares...)...).Name(authConfigs[0].Action)
    64  }
    65  
    66  func (g *Group) Head(path string, handler server.Handler, authConfigs ...*server.AuthConfig) {
    67  	authConfigs = append(authConfigs, &server.AuthConfig{Action: ""})
    68  	g.FGroup.Head(path, transformHandlers([]server.Handler{handler}, g.middlewares...)...).Name(authConfigs[0].Action)
    69  }