etag.go — fiber Source File
Architecture documentation for etag.go, a go file in the fiber codebase. 1 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR e660d89f_158e_a31e_1a40_def5af9d743a["etag.go"] c0b86961_3ef1_0168_52fc_98627566ed27["bytes"] e660d89f_158e_a31e_1a40_def5af9d743a --> c0b86961_3ef1_0168_52fc_98627566ed27 style e660d89f_158e_a31e_1a40_def5af9d743a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
package etag
import (
"bytes"
"hash/crc32"
"math"
"slices"
"github.com/gofiber/fiber/v3"
"github.com/valyala/bytebufferpool"
)
var (
weakPrefix = []byte("W/")
crc32q = crc32.MakeTable(0xD5828281)
)
// Generate returns a strong ETag for body.
func Generate(body []byte) []byte {
if len(body) > math.MaxUint32 {
return nil
}
bb := bytebufferpool.Get()
defer bytebufferpool.Put(bb)
b := bb.B[:0]
b = append(b, '"')
b = appendUint(b, uint32(len(body))) // #nosec G115 -- length checked above
b = append(b, '-')
b = appendUint(b, crc32.Checksum(body, crc32q))
b = append(b, '"')
return slices.Clone(b)
}
// GenerateWeak returns a weak ETag for body.
func GenerateWeak(body []byte) []byte {
tag := Generate(body)
if tag == nil {
return nil
}
return append(weakPrefix, tag...)
}
// New creates a new middleware handler
func New(config ...Config) fiber.Handler {
// Set default config
cfg := configDefault(config...)
normalizedHeaderETag := []byte("Etag")
// 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()
}
// Return err if next handler returns one
if err := c.Next(); err != nil {
return err
}
// ... (77 more lines)
Domain
Subdomains
Classes
Dependencies
- bytes
Source
Frequently Asked Questions
What does etag.go do?
etag.go is a source file in the fiber codebase, written in go. It belongs to the FiberCore domain, Adapters subdomain.
What functions are defined in etag.go?
etag.go defines 4 function(s): Generate, GenerateWeak, New, appendUint.
What does etag.go depend on?
etag.go imports 1 module(s): bytes.
Where is etag.go in the architecture?
etag.go is located at middleware/etag/etag.go (domain: FiberCore, subdomain: Adapters, directory: middleware/etag).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free