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  }