| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package static
- import (
- "io/fs"
- "time"
- "github.com/gofiber/fiber/v3"
- )
- // Config defines the config for middleware.
- type Config struct {
- // FS is the file system to serve the static files from.
- // You can use interfaces compatible with fs.FS like embed.FS, os.DirFS etc.
- //
- // Optional. Default: nil
- FS fs.FS
- // Next defines a function to skip this middleware when returned true.
- //
- // Optional. Default: nil
- Next func(c fiber.Ctx) bool
- // ModifyResponse defines a function that allows you to alter the response.
- //
- // Optional. Default: nil
- ModifyResponse fiber.Handler
- // NotFoundHandler defines a function to handle when the path is not found.
- //
- // Optional. Default: nil
- NotFoundHandler fiber.Handler
- // The names of the index files for serving a directory.
- //
- // Optional. Default: []string{"index.html"}.
- IndexNames []string `json:"index"`
- // Expiration duration for inactive file handlers.
- // Use a negative time.Duration to disable it.
- //
- // Optional. Default: 10 * time.Second.
- CacheDuration time.Duration `json:"cache_duration"`
- // The value for the Cache-Control HTTP-header
- // that is set on the file response. MaxAge is defined in seconds.
- //
- // Optional. Default: 0.
- MaxAge int `json:"max_age"`
- // When set to true, the server tries minimizing CPU usage by caching compressed files.
- // This works differently than the github.com/gofiber/compression middleware.
- //
- // Optional. Default: false
- Compress bool `json:"compress"`
- // When set to true, enables byte range requests.
- //
- // Optional. Default: false
- ByteRange bool `json:"byte_range"`
- // When set to true, enables directory browsing.
- //
- // Optional. Default: false.
- Browse bool `json:"browse"`
- // When set to true, enables direct download.
- //
- // Optional. Default: false.
- Download bool `json:"download"`
- }
- // ConfigDefault is the default config
- var ConfigDefault = Config{
- IndexNames: []string{"index.html"},
- CacheDuration: 10 * time.Second,
- }
- // Helper function to set default values
- func configDefault(config ...Config) Config {
- // Return default config if nothing provided
- if len(config) < 1 {
- return ConfigDefault
- }
- // Override default config
- cfg := config[0]
- // Set default values
- if len(cfg.IndexNames) == 0 {
- cfg.IndexNames = ConfigDefault.IndexNames
- }
- if cfg.CacheDuration == 0 {
- cfg.CacheDuration = ConfigDefault.CacheDuration
- }
- return cfg
- }
|