Files
Crussell/backend/mw/ratelimit_dev.go
T

45 lines
970 B
Go

//go:build dev
// +build dev
package mw
import (
"net/http"
"sync"
"time"
)
func RateLimit(limit int, window time.Duration) func(http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
next.ServeHTTP(w, r)
})
}
}
type ProgressiveRateLimiter struct {
requests map[string]*ipProgressiveState
mu sync.RWMutex
}
type ipProgressiveState struct {
timestamps []time.Time
}
func NewProgressiveRateLimiter() *ProgressiveRateLimiter {
return &ProgressiveRateLimiter{
requests: make(map[string]*ipProgressiveState),
}
}
func (prl *ProgressiveRateLimiter) cleanup() {}
func (prl *ProgressiveRateLimiter) Check(ip string) int { return 0 }
var globalProgressiveLimiter = NewProgressiveRateLimiter()
func ProgressiveRateLimit(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
next.ServeHTTP(w, r)
})
}