package meta import ( "dove/utils/logger" "github.com/gofiber/fiber/v2" ) type Param struct { Key string Value string } type RequestInfo struct { Path string Method string Query []Param Params []Param Headers []Param QueryString string IP string URL string } type RequestData struct { RequestInfo Context *fiber.Ctx } func Request(context *fiber.Ctx) *RequestData { data, ok := context.Locals(RequestKey).(RequestInfo) if !ok { logger.Errorf(LogPrefix, RequestContextMissing) return nil } return &RequestData{ RequestInfo: data, Context: context, } } func (self *RequestData) Param(key string) string { if self == nil || self.Context == nil { return "" } return self.Context.Params(key) } func (self *RequestData) Query(key string) string { if self == nil { return "" } return findParam(self.RequestInfo.Query, key) } func (self *RequestData) Header(key string) string { if self == nil { return "" } return findParam(self.RequestInfo.Headers, key) } func findParam(params []Param, key string) string { for _, param := range params { if param.Key == key { return param.Value } } return "" }