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.