Safe Haskell | None |
---|---|
Language | Haskell2010 |
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 minBound :: WindowSize # maxBound :: WindowSize # | |
Enum WindowSize Source # | |
Defined in Control.RateLimiter 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 (==) :: WindowSize -> WindowSize -> Bool # (/=) :: WindowSize -> WindowSize -> Bool # | |
Show WindowSize Source # | |
Defined in Control.RateLimiter showsPrec :: Int -> WindowSize -> ShowS # show :: WindowSize -> String # showList :: [WindowSize] -> ShowS # |
data RateLimitMode Source #
Instances
Eq RateLimitMode Source # | |
Defined in Control.RateLimiter (==) :: RateLimitMode -> RateLimitMode -> Bool # (/=) :: RateLimitMode -> RateLimitMode -> Bool # | |
Show RateLimitMode Source # | |
Defined in Control.RateLimiter showsPrec :: Int -> RateLimitMode -> ShowS # show :: RateLimitMode -> String # showList :: [RateLimitMode] -> ShowS # |
data RateLimitConfig Source #
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