Files
api/classes/ratelimit.php
T
2024-12-16 08:54:03 +01:00

29 lines
754 B
PHP

<?php
namespace classes;
use interfaces\ratelimit_i;
use objects\ratelimit_o;
class ratelimit implements ratelimit_i
{
private int $limit; // The number of requests allowed in the time period
private int $time; // The time period in seconds
public function __construct(int $defaultLimit, int $defaultTime)
{
$this->limit = $defaultLimit;
$this->time = $defaultTime;
}
public function enforceIP(string $ip): bool
{
global $response;
$ratelimit = (new ratelimit_o())->getOrCreateRateLimitByIp($ip);
if ($ratelimit->count->value() >= $this->limit) {
$response->rate_limit_exceeded();
}
$ratelimit->increment($ratelimit->id, 1);
return true;
}
}