Files
zeekayandHanzo Dev f60e254acb module: rename to github.com/zap-proto/fiber/v3
Fork of gofiber/fiber v3 based on the v3.2.0 tag. Rewrites all self-imports
github.com/gofiber/fiber/v3 -> github.com/zap-proto/fiber/v3. Upstream
gofiber/schema and gofiber/utils/v2 dependencies are left untouched.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-10 12:49:35 -07:00

58 lines
1.2 KiB
Go

package timeout
import (
"time"
"github.com/zap-proto/fiber/v3"
)
// Config holds the configuration for the timeout middleware.
type Config struct {
// Next defines a function to skip this middleware.
// Optional. Default: nil
Next func(c fiber.Ctx) bool
// OnTimeout is executed when a timeout occurs.
// Optional. Default: nil (return fiber.ErrRequestTimeout)
OnTimeout fiber.Handler
// Errors defines custom errors that are treated as timeouts.
// Optional. Default: nil
Errors []error
// Timeout defines the timeout duration for all routes.
// Optional. Default: 0 (no timeout)
Timeout time.Duration
}
// ConfigDefault is the default configuration.
var ConfigDefault = Config{
Next: nil,
Timeout: 0,
OnTimeout: nil,
Errors: nil,
}
// configDefault returns the first Config value or ConfigDefault.
func configDefault(config ...Config) Config {
if len(config) < 1 {
return ConfigDefault
}
cfg := config[0]
if cfg.Timeout < 0 {
cfg.Timeout = ConfigDefault.Timeout
}
if cfg.Errors == nil {
cfg.Errors = ConfigDefault.Errors
}
if cfg.OnTimeout == nil {
cfg.OnTimeout = ConfigDefault.OnTimeout
}
if cfg.Next == nil {
cfg.Next = ConfigDefault.Next
}
return cfg
}