middleware

package
v1.3.1 Latest Latest
Warning

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

Go to latest
Published: Jan 30, 2026 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CompressionMiddleware

func CompressionMiddleware(config *CompressionConfig) httpcontract.Middleware

func CorsMiddleware

func CorsMiddleware(config *CorsConfig) httpcontract.Middleware

func DefaultCompressionMiddleware

func DefaultCompressionMiddleware() httpcontract.Middleware

func DefaultCorsMiddleware

func DefaultCorsMiddleware() httpcontract.Middleware

func IpRateLimit

func IpRateLimit(requestsPerMinute int) httpcontract.Middleware

func RateLimitMiddleware

func RateLimitMiddleware(config *RateLimitConfig) httpcontract.Middleware

func RestrictiveCors

func RestrictiveCors(allowedOrigins ...string) httpcontract.Middleware

func SimpleRateLimit

func SimpleRateLimit(requestsPerMinute int) httpcontract.Middleware

func StaticMiddleware

func StaticMiddleware(
	options *static.Options,
) httpcontract.Middleware

func UserRateLimit

func UserRateLimit(
	requestsPerMinute int,
	getUserId KeyExtractor,
) httpcontract.Middleware

Types

type CompressionConfig

type CompressionConfig struct {
	// contains filtered or unexported fields
}

func DefaultCompressionConfig

func DefaultCompressionConfig() *CompressionConfig

func NewCompressionConfig

func NewCompressionConfig(
	level int,
	minSize int,
	excludedContentTypes []string,
	excludedPaths []string,
) *CompressionConfig

func (*CompressionConfig) ExcludedContentTypes

func (instance *CompressionConfig) ExcludedContentTypes() []string

func (*CompressionConfig) ExcludedPaths

func (instance *CompressionConfig) ExcludedPaths() []string

func (*CompressionConfig) Level

func (instance *CompressionConfig) Level() int

func (*CompressionConfig) MinSize

func (instance *CompressionConfig) MinSize() int

func (*CompressionConfig) SetExcludedContentTypes

func (instance *CompressionConfig) SetExcludedContentTypes(excludedContentTypes []string)

func (*CompressionConfig) SetExcludedPaths

func (instance *CompressionConfig) SetExcludedPaths(excludedPaths []string)

func (*CompressionConfig) SetLevel

func (instance *CompressionConfig) SetLevel(level int)

func (*CompressionConfig) SetMinSize

func (instance *CompressionConfig) SetMinSize(minSize int)

type CorsConfig

type CorsConfig struct {
	// contains filtered or unexported fields
}

func DefaultCorsConfig

func DefaultCorsConfig() *CorsConfig

func NewCorsConfig

func NewCorsConfig(
	allowOrigins []string,
	allowMethods []string,
	allowHeaders []string,
	exposeHeaders []string,
	allowCredentials bool,
	maxAge int,
	allowOriginFunc func(origin string) bool,
) *CorsConfig

func RestrictiveCorsConfig

func RestrictiveCorsConfig(allowedOrigins []string) *CorsConfig

func (*CorsConfig) AllowCredentials

func (instance *CorsConfig) AllowCredentials() bool

func (*CorsConfig) AllowHeaders

func (instance *CorsConfig) AllowHeaders() []string

func (*CorsConfig) AllowMethods

func (instance *CorsConfig) AllowMethods() []string

func (*CorsConfig) AllowOriginFunc

func (instance *CorsConfig) AllowOriginFunc() func(origin string) bool

func (*CorsConfig) AllowOrigins

func (instance *CorsConfig) AllowOrigins() []string

func (*CorsConfig) ExposeHeaders

func (instance *CorsConfig) ExposeHeaders() []string

func (*CorsConfig) MaxAge

func (instance *CorsConfig) MaxAge() int

func (*CorsConfig) SetAllowHeaders

func (instance *CorsConfig) SetAllowHeaders(allowHeaders []string)

func (*CorsConfig) SetAllowMethods

func (instance *CorsConfig) SetAllowMethods(allowMethods []string)

func (*CorsConfig) SetAllowOrigins

func (instance *CorsConfig) SetAllowOrigins(allowOrigins []string)

type KeyExtractor

type KeyExtractor = func(httpcontract.Request) string

type OnLimitExceeded

type OnLimitExceeded = func(httpcontract.Request) (httpcontract.Response, error)

type RateLimitConfig

type RateLimitConfig struct {
	// contains filtered or unexported fields
}

func NewRateLimitConfig

func NewRateLimitConfig(
	limiter httpcontract.RateLimiter,
	keyExtractor KeyExtractor,
	onLimitExceeded OnLimitExceeded,
) *RateLimitConfig

func (*RateLimitConfig) KeyExtractor

func (instance *RateLimitConfig) KeyExtractor() KeyExtractor

func (*RateLimitConfig) Limiter

func (instance *RateLimitConfig) Limiter() httpcontract.RateLimiter

func (*RateLimitConfig) OnLimitExceeded

func (instance *RateLimitConfig) OnLimitExceeded() OnLimitExceeded

func (*RateLimitConfig) SetKeyExtractor

func (instance *RateLimitConfig) SetKeyExtractor(keyExtractor KeyExtractor)

func (*RateLimitConfig) SetOnLimitExceeded

func (instance *RateLimitConfig) SetOnLimitExceeded(onLimitExceeded OnLimitExceeded)

type SlidingWindowLimiter

type SlidingWindowLimiter struct {
	// contains filtered or unexported fields
}

func NewSlidingWindowLimiter

func NewSlidingWindowLimiter(limit int, window time.Duration) *SlidingWindowLimiter

func NewSlidingWindowLimiterWithClock

func NewSlidingWindowLimiterWithClock(clockInstance clockcontract.Clock, limit int, window time.Duration) *SlidingWindowLimiter

func (*SlidingWindowLimiter) Allow

func (instance *SlidingWindowLimiter) Allow(key string) bool

func (*SlidingWindowLimiter) Close

func (instance *SlidingWindowLimiter) Close() error

func (*SlidingWindowLimiter) Reset

func (instance *SlidingWindowLimiter) Reset(key string)

type TokenBucketLimiter

type TokenBucketLimiter struct {
	// contains filtered or unexported fields
}

func NewTokenBucketLimiter

func NewTokenBucketLimiter(rate int, window time.Duration) *TokenBucketLimiter

func NewTokenBucketLimiterWithClock

func NewTokenBucketLimiterWithClock(clockInstance clockcontract.Clock, rate int, window time.Duration) *TokenBucketLimiter

func (*TokenBucketLimiter) Allow

func (instance *TokenBucketLimiter) Allow(key string) bool

func (*TokenBucketLimiter) Close

func (instance *TokenBucketLimiter) Close() error

func (*TokenBucketLimiter) Reset

func (instance *TokenBucketLimiter) Reset(key string)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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