package meta import "github.com/gofiber/fiber/v2" func BuildRequest(context *fiber.Ctx) RequestInfo { return RequestInfo{ Path: context.Path(), Method: context.Method(), Query: buildQueryParams(context), Params: buildRouteParams(context), Headers: buildHeaders(context), QueryString: string(context.Request().URI().QueryString()), IP: context.IP(), URL: context.OriginalURL(), } } func buildQueryParams(context *fiber.Ctx) []Param { params := make([]Param, 0) context.Request().URI().QueryArgs().VisitAll(func(name []byte, paramValue []byte) { params = append(params, Param{ Key: string(name), Value: string(paramValue), }) }) return params } func buildRouteParams(context *fiber.Ctx) []Param { params := make([]Param, 0) for name, routeValue := range context.AllParams() { params = append(params, Param{ Key: name, Value: routeValue, }) } return params } func buildHeaders(context *fiber.Ctx) []Param { params := make([]Param, 0) context.Request().Header.VisitAll(func(name []byte, headerValue []byte) { params = append(params, Param{ Key: string(name), Value: string(headerValue), }) }) return params }