Documentation
¶
Overview ¶
Package ratelimit provides rate limiting middleware for the HTTP server. Uses a sliding window algorithm with in-memory storage.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IPAndPathKeyFunc ¶
IPAndPathKeyFunc uses IP + path as the key (for per-endpoint limiting).
Types ¶
type Config ¶
type Config struct {
Enabled bool
// Login rate limiting (strict)
LoginLimit int // requests per window
LoginWindow time.Duration // window duration
// Public API rate limiting (moderate)
APILimit int
APIWindow time.Duration
// Submission rate limiting (comments, feedback, newsletter)
SubmitLimit int
SubmitWindow time.Duration
}
Config holds rate limiter configuration.
type Limiter ¶
type Limiter struct {
// contains filtered or unexported fields
}
Limiter tracks request counts per key using a sliding window.
func (*Limiter) Allow ¶
Allow checks if a request should be allowed for the given key. Returns (allowed, remaining, resetTime).
func (*Limiter) Middleware ¶
func (l *Limiter) Middleware(keyFunc KeyFunc) gin.HandlerFunc
Middleware creates a Gin middleware that applies rate limiting.
Click to show internal directories.
Click to hide internal directories.