Documentation
¶
Index ¶
- func CompressionMiddleware(config *CompressionConfig) httpcontract.Middleware
- func CorsMiddleware(config *CorsConfig) httpcontract.Middlewaredeprecated
- func DefaultClientIp(request httpcontract.Request) string
- func DefaultCompressionMiddleware() httpcontract.Middleware
- func DefaultCorsMiddleware() httpcontract.Middlewaredeprecated
- func IpRateLimit(requestsPerMinute int) httpcontract.Middleware
- func RateLimitMiddleware(config *RateLimitConfig) httpcontract.Middleware
- func RestrictiveCors(allowedOrigins ...string) httpcontract.Middlewaredeprecated
- func SimpleRateLimit(requestsPerMinute int) httpcontract.Middleware
- func StaticMiddleware(options *static.Options) httpcontract.Middleware
- func UserRateLimit(requestsPerMinute int, getUserId KeyExtractor) httpcontract.Middleware
- type ClientIpResolver
- type CompressionConfig
- func (instance *CompressionConfig) ExcludedContentTypes() []string
- func (instance *CompressionConfig) ExcludedPaths() []string
- func (instance *CompressionConfig) Level() int
- func (instance *CompressionConfig) MinSize() int
- func (instance *CompressionConfig) SetExcludedContentTypes(excludedContentTypes []string)
- func (instance *CompressionConfig) SetExcludedPaths(excludedPaths []string)
- func (instance *CompressionConfig) SetLevel(level int)
- func (instance *CompressionConfig) SetMinSize(minSize int)
- type CorsConfigdeprecated
- func (instance *CorsConfig) AllowCredentials() bool
- func (instance *CorsConfig) AllowHeaders() []string
- func (instance *CorsConfig) AllowMethods() []string
- func (instance *CorsConfig) AllowOriginFunc() func(origin string) bool
- func (instance *CorsConfig) AllowOrigins() []string
- func (instance *CorsConfig) ExposeHeaders() []string
- func (instance *CorsConfig) MaxAge() int
- func (instance *CorsConfig) SetAllowHeaders(allowHeaders []string)
- func (instance *CorsConfig) SetAllowMethods(allowMethods []string)
- func (instance *CorsConfig) SetAllowOrigins(allowOrigins []string)
- type KeyExtractor
- type OnLimitExceeded
- type RateLimitConfig
- func (instance *RateLimitConfig) ClientIpResolver() ClientIpResolver
- func (instance *RateLimitConfig) KeyExtractor() KeyExtractor
- func (instance *RateLimitConfig) Limiter() httpcontract.RateLimiter
- func (instance *RateLimitConfig) OnLimitExceeded() OnLimitExceeded
- func (instance *RateLimitConfig) SetClientIpResolver(resolver ClientIpResolver)
- func (instance *RateLimitConfig) SetKeyExtractor(keyExtractor KeyExtractor)
- func (instance *RateLimitConfig) SetOnLimitExceeded(onLimitExceeded OnLimitExceeded)
- type SlidingWindowLimiter
- type TokenBucketLimiter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CompressionMiddleware ¶
func CompressionMiddleware(config *CompressionConfig) httpcontract.Middleware
func CorsMiddleware
deprecated
func CorsMiddleware(config *CorsConfig) httpcontract.Middleware
Deprecated: use github.com/precision-soft/melody/v2/http/cors.Middleware instead.
func DefaultClientIp ¶ added in v2.5.0
func DefaultClientIp(request httpcontract.Request) string
func DefaultCompressionMiddleware ¶
func DefaultCompressionMiddleware() httpcontract.Middleware
func DefaultCorsMiddleware
deprecated
func DefaultCorsMiddleware() httpcontract.Middleware
Deprecated: use github.com/precision-soft/melody/v2/http/cors.DefaultMiddleware instead.
func IpRateLimit ¶
func IpRateLimit(requestsPerMinute int) httpcontract.Middleware
func RateLimitMiddleware ¶
func RateLimitMiddleware(config *RateLimitConfig) httpcontract.Middleware
func RestrictiveCors
deprecated
func RestrictiveCors(allowedOrigins ...string) httpcontract.Middleware
Deprecated: use github.com/precision-soft/melody/v2/http/cors.Restrictive instead.
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 ClientIpResolver ¶ added in v2.5.0
type ClientIpResolver = func(httpcontract.Request) string
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
deprecated
type CorsConfig struct {
// contains filtered or unexported fields
}
Deprecated: use github.com/precision-soft/melody/v2/http/cors.Service instead.
func DefaultCorsConfig
deprecated
func DefaultCorsConfig() *CorsConfig
Deprecated: use github.com/precision-soft/melody/v2/http/cors.DefaultService instead.
func NewCorsConfig
deprecated
func RestrictiveCorsConfig
deprecated
func RestrictiveCorsConfig(allowedOrigins []string) *CorsConfig
Deprecated: use github.com/precision-soft/melody/v2/http/cors.RestrictiveService instead.
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) ClientIpResolver ¶ added in v2.5.0
func (instance *RateLimitConfig) ClientIpResolver() ClientIpResolver
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) SetClientIpResolver ¶ added in v2.5.0
func (instance *RateLimitConfig) SetClientIpResolver(resolver ClientIpResolver)
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)
Click to show internal directories.
Click to hide internal directories.