Safe Haskell | None |
---|---|
Language | Haskell2010 |
Control.RateLimiter
Synopsis
- data WindowSize
- data RateLimitMode
- data RateLimitConfig = RateLimitConfig {
- rlc_mode :: !RateLimitMode
- rlc_maximum :: !Int
- data RateLimiter k
- newRateLimiter :: Vector RateLimitConfig -> IO (RateLimiter k)
- isRateLimited :: (Eq k, MonadIO m) => k -> RateLimiter k -> m Bool
- withRetryRateLimiter :: Eq k => MonadIO m => k -> RateLimiter k -> m a -> m a
Documentation
data WindowSize Source #
Instances
Bounded WindowSize Source # | |
Defined in Control.RateLimiter | |
Enum WindowSize Source # | |
Defined in Control.RateLimiter Methods succ :: WindowSize -> WindowSize # pred :: WindowSize -> WindowSize # toEnum :: Int -> WindowSize # fromEnum :: WindowSize -> Int # enumFrom :: WindowSize -> [WindowSize] # enumFromThen :: WindowSize -> WindowSize -> [WindowSize] # enumFromTo :: WindowSize -> WindowSize -> [WindowSize] # enumFromThenTo :: WindowSize -> WindowSize -> WindowSize -> [WindowSize] # | |
Eq WindowSize Source # | |
Defined in Control.RateLimiter | |
Show WindowSize Source # | |
Defined in Control.RateLimiter Methods showsPrec :: Int -> WindowSize -> ShowS # show :: WindowSize -> String # showList :: [WindowSize] -> ShowS # |
data RateLimitMode Source #
Constructors
RollingWindow !DiffTime | |
FixedWindow !WindowSize |
Instances
Eq RateLimitMode Source # | |
Defined in Control.RateLimiter Methods (==) :: RateLimitMode -> RateLimitMode -> Bool # (/=) :: RateLimitMode -> RateLimitMode -> Bool # | |
Show RateLimitMode Source # | |
Defined in Control.RateLimiter Methods showsPrec :: Int -> RateLimitMode -> ShowS # show :: RateLimitMode -> String # showList :: [RateLimitMode] -> ShowS # |
data RateLimitConfig Source #
Constructors
RateLimitConfig | |
Fields
|
data RateLimiter k Source #
newRateLimiter :: Vector RateLimitConfig -> IO (RateLimiter k) Source #
Create a new rate limiter with a list of configurations
isRateLimited :: (Eq k, MonadIO m) => k -> RateLimiter k -> m Bool Source #
Check if a given key is rate limited. Use ()
if you don't need multiple keys
withRetryRateLimiter :: Eq k => MonadIO m => k -> RateLimiter k -> m a -> m a Source #
Retry action if rate limited after 1 second