github.com/gofiber/fiber/v2@v2.47.0/middleware/compress/config.go (about)

     1  package compress
     2  
     3  import (
     4  	"github.com/gofiber/fiber/v2"
     5  )
     6  
     7  // Config defines the config for middleware.
     8  type Config struct {
     9  	// Next defines a function to skip this middleware when returned true.
    10  	//
    11  	// Optional. Default: nil
    12  	Next func(c *fiber.Ctx) bool
    13  
    14  	// Level determines the compression algorithm
    15  	//
    16  	// Optional. Default: LevelDefault
    17  	// LevelDisabled:         -1
    18  	// LevelDefault:          0
    19  	// LevelBestSpeed:        1
    20  	// LevelBestCompression:  2
    21  	Level Level
    22  }
    23  
    24  // Level is numeric representation of compression level
    25  type Level int
    26  
    27  // Represents compression level that will be used in the middleware
    28  const (
    29  	LevelDisabled        Level = -1
    30  	LevelDefault         Level = 0
    31  	LevelBestSpeed       Level = 1
    32  	LevelBestCompression Level = 2
    33  )
    34  
    35  // ConfigDefault is the default config
    36  var ConfigDefault = Config{
    37  	Next:  nil,
    38  	Level: LevelDefault,
    39  }
    40  
    41  // Helper function to set default values
    42  func configDefault(config ...Config) Config {
    43  	// Return default config if nothing provided
    44  	if len(config) < 1 {
    45  		return ConfigDefault
    46  	}
    47  
    48  	// Override default config
    49  	cfg := config[0]
    50  
    51  	// Set default values
    52  	if cfg.Level < LevelDisabled || cfg.Level > LevelBestCompression {
    53  		cfg.Level = ConfigDefault.Level
    54  	}
    55  	return cfg
    56  }