Documentation
¶
Index ¶
- func AdaptiveRateLimitMiddleware(baseConfig *RateLimitConfig, logger *logrus.Logger) gin.HandlerFunc
- func DefaultKeyGenerator(c *gin.Context) string
- func PathKeyGenerator(c *gin.Context) string
- func PerPathRateLimitMiddleware(pathLimits map[string]*RateLimitConfig, logger *logrus.Logger) gin.HandlerFunc
- func RateLimitMiddleware(rateLimiter RateLimiter, config *RateLimitConfig) gin.HandlerFunc
- func RateLimitStatsHandler(rateLimiter RateLimiter, config *RateLimitConfig) gin.HandlerFunc
- func TenantKeyGenerator(c *gin.Context) string
- func UserKeyGenerator(c *gin.Context) string
- type KeyGeneratorFunc
- type MemoryRateLimiter
- type RateLimit
- type RateLimitConfig
- type RateLimiter
- type RedisRateLimiter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AdaptiveRateLimitMiddleware ¶
func AdaptiveRateLimitMiddleware(baseConfig *RateLimitConfig, logger *logrus.Logger) gin.HandlerFunc
AdaptiveRateLimitMiddleware rate limiting adaptativo basado en load
func DefaultKeyGenerator ¶
DefaultKeyGenerator generador de clave por defecto (por IP)
func PathKeyGenerator ¶
PathKeyGenerator generador de clave por path + IP
func PerPathRateLimitMiddleware ¶
func PerPathRateLimitMiddleware(pathLimits map[string]*RateLimitConfig, logger *logrus.Logger) gin.HandlerFunc
PerPathRateLimitMiddleware rate limiting por path específico
func RateLimitMiddleware ¶
func RateLimitMiddleware(rateLimiter RateLimiter, config *RateLimitConfig) gin.HandlerFunc
RateLimitMiddleware middleware de rate limiting
func RateLimitStatsHandler ¶
func RateLimitStatsHandler(rateLimiter RateLimiter, config *RateLimitConfig) gin.HandlerFunc
RateLimitStatsHandler handler para obtener estadísticas de rate limiting
func TenantKeyGenerator ¶
TenantKeyGenerator generador de clave por tenant
func UserKeyGenerator ¶
UserKeyGenerator generador de clave por usuario
Types ¶
type KeyGeneratorFunc ¶
KeyGeneratorFunc función para generar la clave de rate limiting
type MemoryRateLimiter ¶
type MemoryRateLimiter struct {
// contains filtered or unexported fields
}
MemoryRateLimiter implementación en memoria
func NewMemoryRateLimiter ¶
func NewMemoryRateLimiter(config *RateLimitConfig, logger *logrus.Logger) *MemoryRateLimiter
NewMemoryRateLimiter crea un rate limiter en memoria
func (*MemoryRateLimiter) Close ¶
func (mrl *MemoryRateLimiter) Close()
Close cierra el rate limiter
type RateLimit ¶
type RateLimit struct {
Key string
Limit int
Remaining int
Reset time.Time
ResetDuration time.Duration
WindowStart time.Time
RequestCount int
LastRequestTime time.Time
}
RateLimit representa el estado del rate limiting
type RateLimitConfig ¶
type RateLimitConfig struct {
// Rate limiting settings
RequestsPerSecond int
RequestsPerMinute int
RequestsPerHour int
BurstSize int
// Window settings
WindowSize time.Duration
// Key generation
KeyGenerator KeyGeneratorFunc
// Skip conditions
SkipPaths []string
SkipIPs []string
WhitelistIPs []string
// Response settings
IncludeHeaders bool
CustomMessage string
// Storage
UseRedis bool
RedisClient *redis.Client
RedisPrefix string
// Callbacks
OnLimitExceeded func(c *gin.Context, limit *RateLimit)
OnReset func(c *gin.Context, limit *RateLimit)
}
RateLimitConfig configuración del rate limiter
func DefaultRateLimitConfig ¶
func DefaultRateLimitConfig() *RateLimitConfig
DefaultRateLimitConfig retorna configuración por defecto
type RateLimiter ¶
type RateLimiter interface {
Allow(ctx context.Context, key string) (*RateLimit, error)
Reset(ctx context.Context, key string) error
GetStats(ctx context.Context, key string) (*RateLimit, error)
}
RateLimiter interfaz para implementaciones de rate limiting
func NewRateLimiter ¶
func NewRateLimiter(config *RateLimitConfig, logger *logrus.Logger) RateLimiter
NewRateLimiter crea un rate limiter basado en la configuración
type RedisRateLimiter ¶
type RedisRateLimiter struct {
// contains filtered or unexported fields
}
RedisRateLimiter implementación con Redis
func NewRedisRateLimiter ¶
func NewRedisRateLimiter(config *RateLimitConfig, logger *logrus.Logger) *RedisRateLimiter
NewRedisRateLimiter crea un rate limiter con Redis