Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
getRateLimit example
}
finally
{
$this
->lock?->
release
(
)
;
}
return
$reservation
;
}
public
function
consume
(
int
$tokens
= 1
)
: RateLimit
{
try
{
return
$this
->
reserve
(
$tokens
, 0
)
->
getRateLimit
(
)
;
}
catch
(
MaxWaitDurationExceededException
$e
)
{
return
$e
->
getRateLimit
(
)
;
}
}
}
$this
->
assertSame
(
$rateLimit
,
$rateLimit
->
ensureAccepted
(
)
)
;
}
public
function
testEnsureAcceptedThrowsRateLimitExceptionIfNotAccepted
(
)
{
$rateLimit
=
new
RateLimit
(
10,
$retryAfter
=
new
\
DateTimeImmutable
(
)
, false, 10
)
;
try
{
$rateLimit
->
ensureAccepted
(
)
;
}
catch
(
RateLimitExceededException
$exception
)
{
$this
->
assertSame
(
$rateLimit
,
$exception
->
getRateLimit
(
)
)
;
$this
->
assertSame
(
10,
$exception
->
getRemainingTokens
(
)
)
;
$this
->
assertSame
(
$retryAfter
,
$exception
->
getRetryAfter
(
)
)
;
return
;
}
$this
->
fail
(
'RateLimitExceededException not thrown.'
)
;
}
public
function
testWaitUsesMicrotime
(
)
{
}
finally
{
$this
->lock?->
release
(
)
;
}
return
$reservation
;
}
public
function
consume
(
int
$tokens
= 1
)
: RateLimit
{
try
{
return
$this
->
reserve
(
$tokens
, 0
)
->
getRateLimit
(
)
;
}
catch
(
MaxWaitDurationExceededException
$e
)
{
return
$e
->
getRateLimit
(
)
;
}
}
public
function
getAvailableTokens
(
int
$hitCount
)
: int
{
return
$this
->limit -
$hitCount
;
}
}