ÿØÿà JFIF ÿá Exif MM * ÿÛ C
Server IP : 199.250.214.225 / Your IP : 18.222.113.171 Web Server : Apache System : Linux vps64074.inmotionhosting.com 3.10.0-1160.105.1.vz7.214.3 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : nicngo5 ( 1001) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /home/nicngo5/laravelvue/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ |
Upload File : |
<?php namespace Illuminate\Routing\Middleware; use Closure; use Illuminate\Redis\Limiters\DurationLimiter; use Illuminate\Contracts\Redis\Factory as Redis; class ThrottleRequestsWithRedis extends ThrottleRequests { /** * The Redis factory implementation. * * @var \Illuminate\Contracts\Redis\Factory */ protected $redis; /** * The timestamp of the end of the current duration. * * @var int */ public $decaysAt; /** * The number of remaining slots. * * @var int */ public $remaining; /** * Create a new request throttler. * * @param \Illuminate\Contracts\Redis\Factory $redis * @return void */ public function __construct(Redis $redis) { $this->redis = $redis; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param int|string $maxAttempts * @param float|int $decayMinutes * @return mixed * * @throws \Symfony\Component\HttpKernel\Exception\HttpException */ public function handle($request, Closure $next, $maxAttempts = 60, $decayMinutes = 1) { $key = $this->resolveRequestSignature($request); $maxAttempts = $this->resolveMaxAttempts($request, $maxAttempts); if ($this->tooManyAttempts($key, $maxAttempts, $decayMinutes)) { throw $this->buildException($key, $maxAttempts); } $response = $next($request); return $this->addHeaders( $response, $maxAttempts, $this->calculateRemainingAttempts($key, $maxAttempts) ); } /** * Determine if the given key has been "accessed" too many times. * * @param string $key * @param int $maxAttempts * @param int $decayMinutes * @return mixed */ protected function tooManyAttempts($key, $maxAttempts, $decayMinutes) { $limiter = new DurationLimiter( $this->redis, $key, $maxAttempts, $decayMinutes * 60 ); return tap(! $limiter->acquire(), function () use ($limiter) { [$this->decaysAt, $this->remaining] = [ $limiter->decaysAt, $limiter->remaining, ]; }); } /** * Calculate the number of remaining attempts. * * @param string $key * @param int $maxAttempts * @param int|null $retryAfter * @return int */ protected function calculateRemainingAttempts($key, $maxAttempts, $retryAfter = null) { if (is_null($retryAfter)) { return $this->remaining; } return 0; } /** * Get the number of seconds until the lock is released. * * @param string $key * @return int */ protected function getTimeUntilNextRetry($key) { return $this->decaysAt - $this->currentTime(); } }