update
This commit is contained in:
77
projects/priceservice/vendor/symfony/rate-limiter/RateLimit.php
vendored
Normal file
77
projects/priceservice/vendor/symfony/rate-limiter/RateLimit.php
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\RateLimiter;
|
||||
|
||||
use Symfony\Component\RateLimiter\Exception\RateLimitExceededException;
|
||||
|
||||
/**
|
||||
* @author Valentin Silvestre <vsilvestre.pro@gmail.com>
|
||||
*/
|
||||
class RateLimit
|
||||
{
|
||||
private int $availableTokens;
|
||||
private \DateTimeImmutable $retryAfter;
|
||||
private bool $accepted;
|
||||
private int $limit;
|
||||
|
||||
public function __construct(int $availableTokens, \DateTimeImmutable $retryAfter, bool $accepted, int $limit)
|
||||
{
|
||||
$this->availableTokens = $availableTokens;
|
||||
$this->retryAfter = $retryAfter;
|
||||
$this->accepted = $accepted;
|
||||
$this->limit = $limit;
|
||||
}
|
||||
|
||||
public function isAccepted(): bool
|
||||
{
|
||||
return $this->accepted;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return $this
|
||||
*
|
||||
* @throws RateLimitExceededException if not accepted
|
||||
*/
|
||||
public function ensureAccepted(): static
|
||||
{
|
||||
if (!$this->accepted) {
|
||||
throw new RateLimitExceededException($this);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getRetryAfter(): \DateTimeImmutable
|
||||
{
|
||||
return $this->retryAfter;
|
||||
}
|
||||
|
||||
public function getRemainingTokens(): int
|
||||
{
|
||||
return $this->availableTokens;
|
||||
}
|
||||
|
||||
public function getLimit(): int
|
||||
{
|
||||
return $this->limit;
|
||||
}
|
||||
|
||||
public function wait(): void
|
||||
{
|
||||
$delta = $this->retryAfter->format('U.u') - microtime(true);
|
||||
if ($delta <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
usleep((int) ($delta * 1e6));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user