New() — fiber Function Reference
Architecture documentation for the New() function in favicon.go from the fiber codebase.
Entity Profile
Dependency Diagram
graph TD 82413163_2705_3ea3_1d0b_d6309162a7ab["New()"] 3c25708a_7b43_d7ea_98a8_80dc1d4ca5c8["favicon.go"] 82413163_2705_3ea3_1d0b_d6309162a7ab -->|defined in| 3c25708a_7b43_d7ea_98a8_80dc1d4ca5c8 e9d059ec_d63b_2bc7_71c1_55724c53b880["readLimited()"] 82413163_2705_3ea3_1d0b_d6309162a7ab -->|calls| e9d059ec_d63b_2bc7_71c1_55724c53b880 style 82413163_2705_3ea3_1d0b_d6309162a7ab fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
middleware/favicon/favicon.go lines 21–101
func New(config ...Config) fiber.Handler {
cfg := configDefault(config...)
// Load iconData if provided
var (
err error
iconData []byte
iconLenHeader string
iconLen int
f fs.File
)
if cfg.Data != nil {
// use the provided favicon data
iconData = cfg.Data
iconLenHeader = strconv.Itoa(len(cfg.Data))
iconLen = len(cfg.Data)
} else if cfg.File != "" {
// read from configured filesystem if present
if cfg.FileSystem != nil {
f, err = cfg.FileSystem.Open(cfg.File)
if err != nil {
panic(err)
}
defer func() {
_ = f.Close() //nolint:errcheck // not needed
}()
if iconData, err = readLimited(f, cfg.MaxBytes); err != nil {
panic(err)
}
} else {
f, err = os.Open(cfg.File)
if err != nil {
panic(err)
}
defer func() {
_ = f.Close() //nolint:errcheck // not needed
}()
if iconData, err = readLimited(f, cfg.MaxBytes); err != nil {
panic(err)
}
}
iconLenHeader = strconv.Itoa(len(iconData))
iconLen = len(iconData)
}
// 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()
}
// Only respond to favicon requests
if c.Path() != cfg.URL {
return c.Next()
}
// Only allow GET, HEAD and OPTIONS requests
if c.Method() != fiber.MethodGet && c.Method() != fiber.MethodHead {
if c.Method() != fiber.MethodOptions {
c.Status(fiber.StatusMethodNotAllowed)
} else {
c.Status(fiber.StatusOK)
}
c.Set(fiber.HeaderAllow, hAllow)
c.Set(fiber.HeaderContentLength, hZero)
return nil
}
// Serve cached favicon
if iconLen > 0 {
c.Set(fiber.HeaderContentLength, iconLenHeader)
c.Set(fiber.HeaderContentType, hType)
c.Set(fiber.HeaderCacheControl, cfg.CacheControl)
return c.Status(fiber.StatusOK).Send(iconData)
}
return c.SendStatus(fiber.StatusNoContent)
}
}
Domain
Subdomains
Defined In
Calls
Source
Frequently Asked Questions
What does New() do?
New() is a function in the fiber codebase, defined in middleware/favicon/favicon.go.
Where is New() defined?
New() is defined in middleware/favicon/favicon.go at line 21.
What does New() call?
New() calls 1 function(s): readLimited.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free