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

     1  package fiberserver
     2  
     3  import (
     4  	"github.com/gofiber/fiber/v2"
     5  	"github.com/ngocphuongnb/tetua/app/entities"
     6  	"github.com/ngocphuongnb/tetua/app/server"
     7  )
     8  
     9  func transformHandlers(handlers []server.Handler, middlewares ...server.Handler) []fiber.Handler {
    10  	var fiberHandlers []fiber.Handler
    11  
    12  	for i := 0; i < len(middlewares); i++ {
    13  		func(i int) {
    14  			fiberHandlers = append(fiberHandlers, func(c *fiber.Ctx) error {
    15  				return middlewares[i](createContext(c))
    16  			})
    17  		}(i)
    18  	}
    19  
    20  	for i := 0; i < len(handlers); i++ {
    21  		func(i int) {
    22  			fiberHandlers = append(fiberHandlers, func(c *fiber.Ctx) error {
    23  				return handlers[i](createContext(c))
    24  			})
    25  		}(i)
    26  	}
    27  
    28  	return fiberHandlers
    29  }
    30  
    31  func createContext(c *fiber.Ctx) server.Context {
    32  	var user *entities.User
    33  
    34  	if c.Locals("user") != nil {
    35  		user = c.Locals("user").(*entities.User)
    36  	}
    37  
    38  	return &Context{
    39  		Ctx: c,
    40  		MetaData: &entities.Meta{
    41  			Messages: &entities.Messages{},
    42  			User:     user,
    43  		},
    44  	}
    45  }