 Documentation
      ¶
      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 AdaptiveConfig
- type HeaderConfig
- type IntelligentRateLimitConfig
- type IntelligentRateLimiter
- type KeyGeneratorFunc
- type LimitInfo
- type MemoryRateLimiter
- type RateLimit
- type RateLimitConfig
- type RateLimitStrategy
- type RateLimiter
- type RedisRateLimiter
- type SystemMetrics
- type TierConfig
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 AdaptiveConfig ¶ added in v1.0.0
type AdaptiveConfig struct {
	// CPU thresholds
	CPULowThreshold    float64 // < 50%
	CPUMediumThreshold float64 // < 80%
	CPUHighThreshold   float64 // >= 80%
	// Memory thresholds
	MemoryLowThreshold    float64 // < 60%
	MemoryMediumThreshold float64 // < 85%
	MemoryHighThreshold   float64 // >= 85%
	// Response time thresholds
	ResponseTimeLow    time.Duration // < 100ms
	ResponseTimeMedium time.Duration // < 500ms
	ResponseTimeHigh   time.Duration // >= 500ms
	// Adjustment factors
	LowLoadMultiplier    float64 // 1.5x normal limit
	MediumLoadMultiplier float64 // 1.0x normal limit
	HighLoadMultiplier   float64 // 0.5x normal limit
	// Evaluation interval
	EvaluationInterval time.Duration
}
    AdaptiveConfig configuración para rate limiting adaptivo
type HeaderConfig ¶ added in v1.0.0
type HeaderConfig struct {
	RateLimitHeader  string // X-RateLimit-Limit
	RemainingHeader  string // X-RateLimit-Remaining
	ResetHeader      string // X-RateLimit-Reset
	RetryAfterHeader string // Retry-After
}
    HeaderConfig configuración de headers de rate limit
type IntelligentRateLimitConfig ¶ added in v1.0.0
type IntelligentRateLimitConfig struct {
	// Strategy to use
	Strategy RateLimitStrategy
	// Default limits
	DefaultRequestsPerMin int
	DefaultBurstSize      int
	DefaultWindowSize     time.Duration
	// User tiers
	UserTiers map[string]*TierConfig
	// Key generators
	KeyGenerator      func(*gin.Context) string
	UserTierExtractor func(*gin.Context) string
	// Adaptive settings
	AdaptiveConfig *AdaptiveConfig
	// Storage
	CacheClient cache.CacheInterface
	CachePrefix string
	// Behavior
	SkipSuccessfulRequests bool
	SkipPaths              []string
	Headers                *HeaderConfig
	// Callbacks
	OnLimitExceeded func(*gin.Context, *LimitInfo)
	OnLimitWarning  func(*gin.Context, *LimitInfo)
	// Monitoring
	MetricsEnabled bool
}
    IntelligentRateLimitConfig configuración del rate limiter inteligente
func DefaultConfig ¶ added in v1.0.0
func DefaultConfig() *IntelligentRateLimitConfig
DefaultConfig retorna configuración por defecto
type IntelligentRateLimiter ¶ added in v1.0.0
type IntelligentRateLimiter struct {
	// contains filtered or unexported fields
}
    IntelligentRateLimiter implementa rate limiting inteligente
func NewIntelligentRateLimiter ¶ added in v1.0.0
func NewIntelligentRateLimiter(config *IntelligentRateLimitConfig) *IntelligentRateLimiter
NewIntelligentRateLimiter crea un nuevo rate limiter inteligente
func (*IntelligentRateLimiter) Middleware ¶ added in v1.0.0
func (irl *IntelligentRateLimiter) Middleware() gin.HandlerFunc
Middleware retorna middleware Gin
type KeyGeneratorFunc ¶
KeyGeneratorFunc función para generar la clave de rate limiting
type LimitInfo ¶ added in v1.0.0
type LimitInfo struct {
	Key        string
	Limit      int
	Remaining  int
	ResetTime  time.Time
	RetryAfter time.Duration
	WindowSize time.Duration
	Strategy   RateLimitStrategy
	UserTier   string
	IsExceeded bool
	IsWarning  bool
}
    LimitInfo información sobre el límite actual
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 RateLimitStrategy ¶ added in v1.0.0
type RateLimitStrategy string
RateLimitStrategy define diferentes estrategias de rate limiting
const ( // StrategyTokenBucket token bucket algorithm StrategyTokenBucket RateLimitStrategy = "token_bucket" // StrategyFixedWindow fixed window algorithm StrategyFixedWindow RateLimitStrategy = "fixed_window" // StrategySlidingWindow sliding window algorithm StrategySlidingWindow RateLimitStrategy = "sliding_window" // StrategyAdaptive adaptive rate limiting based on system load StrategyAdaptive RateLimitStrategy = "adaptive" )
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