mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-03 17:42:25 -06:00 
			
		
		
		
	* feat: add rate limit middleware * chore: update vendor dir * chore: update readme with new dependency * chore: add rate limit infos to swagger.md file * refactor: add ipv6 mask limiter option Add IPv6 CIDR /64 mask * refactor: increase rate limit to 1000 Address https://github.com/superseriousbusiness/gotosocial/pull/741#discussion_r945584800 Co-authored-by: tobi <31960611+tsmethurst@users.noreply.github.com>
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package limiter
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"time"
 | 
						|
)
 | 
						|
 | 
						|
// Store is the common interface for limiter stores.
 | 
						|
type Store interface {
 | 
						|
	// Get returns the limit for given identifier.
 | 
						|
	Get(ctx context.Context, key string, rate Rate) (Context, error)
 | 
						|
	// Peek returns the limit for given identifier, without modification on current values.
 | 
						|
	Peek(ctx context.Context, key string, rate Rate) (Context, error)
 | 
						|
	// Reset resets the limit to zero for given identifier.
 | 
						|
	Reset(ctx context.Context, key string, rate Rate) (Context, error)
 | 
						|
	// Increment increments the limit by given count & gives back the new limit for given identifier
 | 
						|
	Increment(ctx context.Context, key string, count int64, rate Rate) (Context, error)
 | 
						|
}
 | 
						|
 | 
						|
// StoreOptions are options for store.
 | 
						|
type StoreOptions struct {
 | 
						|
	// Prefix is the prefix to use for the key.
 | 
						|
	Prefix string
 | 
						|
 | 
						|
	// MaxRetry is the maximum number of retry under race conditions on redis store.
 | 
						|
	// Deprecated: this option is no longer required since all operations are atomic now.
 | 
						|
	MaxRetry int
 | 
						|
 | 
						|
	// CleanUpInterval is the interval for cleanup (run garbage collection) on stale entries on memory store.
 | 
						|
	// Setting this to a low value will optimize memory consumption, but will likely
 | 
						|
	// reduce performance and increase lock contention.
 | 
						|
	// Setting this to a high value will maximum throughput, but will increase the memory footprint.
 | 
						|
	CleanUpInterval time.Duration
 | 
						|
}
 |