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 }