ThrottleRequestsWithRedis
class ThrottleRequestsWithRedis extends ThrottleRequests (View source)
Traits
Properties
| protected RateLimiter | $limiter | The rate limiter instance.  | 
                from ThrottleRequests | 
| protected Factory | $redis | The Redis factory implementation.  | 
                |
| array | $decaysAt | The timestamp of the end of the current duration by key.  | 
                |
| array | $remaining | The number of remaining slots by key.  | 
                
Methods
Get the number of seconds until the given DateTime.
If the given value is an interval, convert it to a DateTime instance.
Handle an incoming request.
Handle an incoming request.
Resolve the number of attempts if the user is authenticated or not.
Create a 'too many attempts' exception.
Get the number of seconds until the lock is released.
Add the limit header information to the given response.
Get the limit headers information.
Calculate the number of remaining attempts.
Determine if the given key has been "accessed" too many times.
Details
        
                    protected        int
    secondsUntil(DateTimeInterface|DateInterval|int $delay)
        
    
    Get the number of seconds until the given DateTime.
        
                    protected        int
    availableAt(DateTimeInterface|DateInterval|int $delay = 0)
        
    
    Get the "available at" UNIX timestamp.
        
                    protected        DateTimeInterface|int
    parseDateInterval(DateTimeInterface|DateInterval|int $delay)
        
    
    If the given value is an interval, convert it to a DateTime instance.
        
                    protected        int
    currentTime()
        
    
    Get the current system time as a UNIX timestamp.
        
                            void
    __construct(RateLimiter $limiter, Factory $redis)
        
    
    Create a new request throttler.
        
                            Response
    handle(Request $request, Closure $next, int|string $maxAttempts = 60, float|int $decayMinutes = 1, string $prefix = '')
        
    
    Handle an incoming request.
        
                    protected        Response
    handleRequestUsingNamedLimiter(Request $request, Closure $next, string $limiterName, Closure $limiter)
        
    
    Handle an incoming request.
        
                    protected        Response
    handleRequest(Request $request, Closure $next, array $limits)
        
    
    Handle an incoming request.
        
                    protected        int
    resolveMaxAttempts(Request $request, int|string $maxAttempts)
        
    
    Resolve the number of attempts if the user is authenticated or not.
        
                    protected        string
    resolveRequestSignature(Request $request)
        
    
    Resolve request signature.
        
                    protected        ThrottleRequestsException
    buildException(Request $request, string $key, int $maxAttempts, callable|null $responseCallback = null)
        
    
    Create a 'too many attempts' exception.
        
                    protected        int
    getTimeUntilNextRetry(string $key)
        
    
    Get the number of seconds until the lock is released.
        
                    protected        Response
    addHeaders(Response $response, int $maxAttempts, int $remainingAttempts, int|null $retryAfter = null)
        
    
    Add the limit header information to the given response.
        
                    protected        array
    getHeaders(int $maxAttempts, int $remainingAttempts, int|null $retryAfter = null, Response|null $response = null)
        
    
    Get the limit headers information.
        
                    protected        int
    calculateRemainingAttempts(string $key, int $maxAttempts, int|null $retryAfter = null)
        
    
    Calculate the number of remaining attempts.
        
                    protected        mixed
    tooManyAttempts(string $key, int $maxAttempts, int $decayMinutes)
        
    
    Determine if the given key has been "accessed" too many times.