config

package
v0.0.0-...-8f7f239 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 31, 2017 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package config provides data structure to configure rate-limiter.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Limiter

type Limiter struct {
	// HTTP message when limit is reached.
	Message string

	// Content-Type for Message
	MessageContentType string

	// HTTP status code when limit is reached.
	StatusCode int

	// Maximum number of requests to limit per duration.
	Max int64

	// Duration of rate-limiter.
	TTL time.Duration

	// List of places to look up IP address.
	// Default is "RemoteAddr", "X-Forwarded-For", "X-Real-IP".
	// You can rearrange the order as you like.
	IPLookups []string

	// The number of steps to take from the proxy in the X-Forwarded-For list.
	// Default is 1. Using 0 will give the proxy IP (end of the list).
	// Using -1 will give the original sender (start of the list).
	XForwardedForIndex int

	// A function to call when a request is rejected.
	RejectFunc func()

	// List of HTTP Methods to limit (GET, POST, PUT, etc.).
	// Empty means limit all methods.
	Methods []string

	// List of HTTP headers to limit.
	// Empty means skip headers checking.
	Headers map[string][]string

	// List of basic auth usernames to limit.
	BasicAuthUsers []string

	// Able to configure token bucket expirations.
	TokenBuckets struct {
		// Default TTL to expire bucket per key basis.
		DefaultExpirationTTL time.Duration

		// How frequently tollbooth will trigger the expire job
		ExpireJobInterval time.Duration
	}

	sync.RWMutex
	// contains filtered or unexported fields
}

Limiter is a config struct to limit a particular request handler.

func NewLimiter

func NewLimiter(max int64, ttl time.Duration) *Limiter

NewLimiter is a constructor for Limiter.

func NewLimiterExpiringBuckets

func NewLimiterExpiringBuckets(max int64, ttl, bucketDefaultExpirationTTL, bucketExpireJobInterval time.Duration) *Limiter

NewLimiterExpiringBuckets constructs Limiter with expirable TokenBuckets.

func (*Limiter) LimitReached

func (l *Limiter) LimitReached(key string) bool

LimitReached returns a bool indicating if the Bucket identified by key ran out of tokens.

func (*Limiter) LimitReachedWithCustomTokenBucketTTL

func (l *Limiter) LimitReachedWithCustomTokenBucketTTL(key string, tokenBucketTTL time.Duration) bool

LimitReachedWithCustomTokenBucketTTL returns a bool indicating if the Bucket identified by key ran out of tokens. This public API allows user to define custom expiration TTL on the key.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL