mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2025-08-19 23:03:01 +02:00
feat: introduce RateLimitException (#4199)
This commit is contained in:
@@ -93,12 +93,12 @@ class RedditBridge extends BridgeAbstract
|
||||
{
|
||||
$forbiddenKey = 'reddit_forbidden';
|
||||
if ($this->cache->get($forbiddenKey)) {
|
||||
throw new HttpException('403 Forbidden', 403);
|
||||
throw new RateLimitException();
|
||||
}
|
||||
|
||||
$rateLimitKey = 'reddit_rate_limit';
|
||||
if ($this->cache->get($rateLimitKey)) {
|
||||
throw new HttpException('429 Too Many Requests', 429);
|
||||
throw new RateLimitException();
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -108,8 +108,10 @@ class RedditBridge extends BridgeAbstract
|
||||
// 403 Forbidden
|
||||
// This can possibly mean that reddit has permanently blocked this server's ip address
|
||||
$this->cache->set($forbiddenKey, true, 60 * 61);
|
||||
throw new RateLimitException();
|
||||
} elseif ($e->getCode() === 429) {
|
||||
$this->cache->set($rateLimitKey, true, 60 * 61);
|
||||
throw new RateLimitException();
|
||||
}
|
||||
throw $e;
|
||||
}
|
||||
|
@@ -194,7 +194,7 @@ class Vk2Bridge extends BridgeAbstract
|
||||
public function collectData()
|
||||
{
|
||||
if ($this->cache->get($this->rateLimitCacheKey)) {
|
||||
throw new HttpException('429 Too Many Requests', 429);
|
||||
throw new RateLimitException();
|
||||
}
|
||||
|
||||
$u = $this->getInput('u');
|
||||
|
@@ -519,7 +519,7 @@ class VkBridge extends BridgeAbstract
|
||||
$uri = urljoin(self::URI, $headers['location'][0]);
|
||||
|
||||
if (str_contains($uri, '/429.html')) {
|
||||
returnServerError('VK responded "Too many requests"');
|
||||
throw new RateLimitException();
|
||||
}
|
||||
|
||||
if (!preg_match('#^https?://vk.com/#', $uri)) {
|
||||
|
@@ -82,13 +82,14 @@ class YoutubeBridge extends BridgeAbstract
|
||||
{
|
||||
$cacheKey = 'youtube_rate_limit';
|
||||
if ($this->cache->get($cacheKey)) {
|
||||
throw new HttpException('429 Too Many Requests', 429);
|
||||
throw new RateLimitException();
|
||||
}
|
||||
try {
|
||||
$this->collectDataInternal();
|
||||
} catch (HttpException $e) {
|
||||
if ($e->getCode() === 429) {
|
||||
$this->cache->set($cacheKey, true, 60 * 16);
|
||||
throw new RateLimitException();
|
||||
}
|
||||
throw $e;
|
||||
}
|
||||
|
Reference in New Issue
Block a user