Home / Function/ New() — fiber Function Reference

New() — fiber Function Reference

Architecture documentation for the New() function in compress.go from the fiber codebase.

Entity Profile

Dependency Diagram

graph TD
  9eaa029f_155c_0c51_4018_00ea7765246c["New()"]
  dbda7960_96fc_de94_3b5b_209ae85b21e1["compress.go"]
  9eaa029f_155c_0c51_4018_00ea7765246c -->|defined in| dbda7960_96fc_de94_3b5b_209ae85b21e1
  184ab948_7a36_6653_ee12_1af97571b3f5["shouldSkip()"]
  9eaa029f_155c_0c51_4018_00ea7765246c -->|calls| 184ab948_7a36_6653_ee12_1af97571b3f5
  f9f0791e_b416_4a3a_d51c_82f5a44ce020["appendVaryAcceptEncoding()"]
  9eaa029f_155c_0c51_4018_00ea7765246c -->|calls| f9f0791e_b416_4a3a_d51c_82f5a44ce020
  style 9eaa029f_155c_0c51_4018_00ea7765246c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

middleware/compress/compress.go lines 54–125

func New(config ...Config) fiber.Handler {
	// Set default config
	cfg := configDefault(config...)

	// Setup request handlers
	var (
		fctx       = func(_ *fasthttp.RequestCtx) {}
		compressor fasthttp.RequestHandler
	)

	// Setup compression algorithm
	switch cfg.Level {
	case LevelDefault:
		// LevelDefault
		compressor = fasthttp.CompressHandlerBrotliLevel(fctx,
			fasthttp.CompressBrotliDefaultCompression,
			fasthttp.CompressDefaultCompression,
		)
	case LevelBestSpeed:
		// LevelBestSpeed
		compressor = fasthttp.CompressHandlerBrotliLevel(fctx,
			fasthttp.CompressBrotliBestSpeed,
			fasthttp.CompressBestSpeed,
		)
	case LevelBestCompression:
		// LevelBestCompression
		compressor = fasthttp.CompressHandlerBrotliLevel(fctx,
			fasthttp.CompressBrotliBestCompression,
			fasthttp.CompressBestCompression,
		)
	default:
		// LevelDisabled
		return func(c fiber.Ctx) error {
			return c.Next()
		}
	}

	// Return new handler
	return func(c fiber.Ctx) error {
		// Don't execute middleware if Next returns true
		if cfg.Next != nil && cfg.Next(c) {
			return c.Next()
		}

		// Continue stack
		if err := c.Next(); err != nil {
			return err
		}

		if shouldSkip(c) {
			appendVaryAcceptEncoding(c)
			return nil
		}

		if c.GetRespHeader(fiber.HeaderContentEncoding) != "" {
			appendVaryAcceptEncoding(c)
			return nil
		}

		compressor(c.RequestCtx())

		if tag := c.GetRespHeader(fiber.HeaderETag); tag != "" && !strings.HasPrefix(tag, "W/") {
			if c.GetRespHeader(fiber.HeaderContentEncoding) != "" {
				c.Set(fiber.HeaderETag, string(etag.Generate(c.Response().Body())))
			}
		}

		appendVaryAcceptEncoding(c)

		return nil
	}
}

Domain

Subdomains

Frequently Asked Questions

What does New() do?
New() is a function in the fiber codebase, defined in middleware/compress/compress.go.
Where is New() defined?
New() is defined in middleware/compress/compress.go at line 54.
What does New() call?
New() calls 2 function(s): appendVaryAcceptEncoding, shouldSkip.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free