github.com/gofiber/fiber/v2@v2.47.0/middleware/requestid/config.go (about) 1 package requestid 2 3 import ( 4 "github.com/gofiber/fiber/v2" 5 "github.com/gofiber/fiber/v2/utils" 6 ) 7 8 // Config defines the config for middleware. 9 type Config struct { 10 // Next defines a function to skip this middleware when returned true. 11 // 12 // Optional. Default: nil 13 Next func(c *fiber.Ctx) bool 14 15 // Header is the header key where to get/set the unique request ID 16 // 17 // Optional. Default: "X-Request-ID" 18 Header string 19 20 // Generator defines a function to generate the unique identifier. 21 // 22 // Optional. Default: utils.UUID 23 Generator func() string 24 25 // ContextKey defines the key used when storing the request ID in 26 // the locals for a specific request. 27 // 28 // Optional. Default: requestid 29 ContextKey interface{} 30 } 31 32 // ConfigDefault is the default config 33 // It uses a fast UUID generator which will expose the number of 34 // requests made to the server. To conceal this value for better 35 // privacy, use the "utils.UUIDv4" generator. 36 var ConfigDefault = Config{ 37 Next: nil, 38 Header: fiber.HeaderXRequestID, 39 Generator: utils.UUID, 40 ContextKey: "requestid", 41 } 42 43 // Helper function to set default values 44 func configDefault(config ...Config) Config { 45 // Return default config if nothing provided 46 if len(config) < 1 { 47 return ConfigDefault 48 } 49 50 // Override default config 51 cfg := config[0] 52 53 // Set default values 54 if cfg.Header == "" { 55 cfg.Header = ConfigDefault.Header 56 } 57 if cfg.Generator == nil { 58 cfg.Generator = ConfigDefault.Generator 59 } 60 if cfg.ContextKey == "" { 61 cfg.ContextKey = ConfigDefault.ContextKey 62 } 63 return cfg 64 }