1
0
mirror of https://github.com/zedeus/nitter.git synced 2025-12-05 19:45:36 -05:00

Raise NoAccountsError when all accounts limited

This commit is contained in:
Zed
2025-02-05 00:32:55 +01:00
parent 19569bb19f
commit 28d3ed7d9f
3 changed files with 10 additions and 1 deletions

View File

@@ -125,6 +125,9 @@ proc getAccountPoolDebug*(): JsonNode =
proc rateLimitError*(): ref RateLimitError =
newException(RateLimitError, "rate limited")
proc noAccountsError*(): ref NoAccountsError =
newException(NoAccountsError, "no accounts available")
proc isLimited(account: GuestAccount; api: Api): bool =
if account.isNil:
return true
@@ -165,7 +168,7 @@ proc getGuestAccount*(api: Api): Future[GuestAccount] {.async.} =
inc result.pending
else:
log "no accounts available for API: ", api
raise rateLimitError()
raise noAccountsError()
proc setLimited*(account: GuestAccount; api: Api) =
account.apis[api].limited = true

View File

@@ -97,6 +97,11 @@ routes:
resp Http429, showError(
&"Instance has been rate limited.<br>Use {link} or try again later.", cfg)
error NoAccountsError:
const link = a("another instance", href = instancesUrl)
resp Http429, showError(
&"Instance has no available accounts.<br>Use {link} or try again later.", cfg)
extend rss, ""
extend status, ""
extend search, ""

View File

@@ -6,6 +6,7 @@ genPrefsType()
type
RateLimitError* = object of CatchableError
NoAccountsError* = object of CatchableError
InternalError* = object of CatchableError
BadClientError* = object of CatchableError