diff --git a/src/api.nim b/src/api.nim index ab03697..9d8d048 100644 --- a/src/api.nim +++ b/src/api.nim @@ -1,4 +1,4 @@ -import asyncdispatch, httpclient, uri, json, strutils, options +import asyncdispatch, httpclient, uri, strutils, json import types, query, formatters, consts, apiutils, parser proc getGraphProfile*(username: string): Future[Profile] {.async.} = diff --git a/src/apiutils.nim b/src/apiutils.nim index cf188ed..a411e4e 100644 --- a/src/apiutils.nim +++ b/src/apiutils.nim @@ -36,7 +36,6 @@ proc fetch*(url: Uri; retried=false; oldApi=false): Future[JsonNode] {.async.} = const rl = "x-rate-limit-" if not oldApi and resp.headers.hasKey(rl & "limit"): - token.limit = parseInt(resp.headers[rl & "limit"]) token.remaining = parseInt(resp.headers[rl & "remaining"]) token.reset = fromUnix(parseInt(resp.headers[rl & "reset"])) @@ -54,7 +53,7 @@ proc fetch*(url: Uri; retried=false; oldApi=false): Future[JsonNode] {.async.} = echo "bad token" except: echo "error: ", url - return nil + result = nil finally: if keepToken: token.release() diff --git a/src/parserutils.nim b/src/parserutils.nim index 4a28b29..b145164 100644 --- a/src/parserutils.nim +++ b/src/parserutils.nim @@ -19,8 +19,7 @@ template `?`*(js: JsonNode): untyped = template `with`*(ident, value, body): untyped = block: let ident {.inject.} = value - if ident != nil: - body + if ident != nil: body template `with`*(ident; value: JsonNode; body): untyped = block: diff --git a/src/tokens.nim b/src/tokens.nim index dc80383..09e6675 100644 --- a/src/tokens.nim +++ b/src/tokens.nim @@ -19,11 +19,11 @@ proc fetchToken(): Future[Token] {.async.} = except: discard if pos == -1: echo "token parse fail"; return - result = Token(tok: resp[pos+3 .. pos+21], limit: 187, remaining: 187, + result = Token(tok: resp[pos+3 .. pos+21], remaining: 187, reset: getTime() + 15.minutes, init: getTime()) proc expired(token: Token): bool {.inline.} = - const expirationTime = 1.hours + const expirationTime = 2.hours result = token.init < getTime() - expirationTime proc isLimited(token: Token): bool {.inline.} = @@ -54,6 +54,6 @@ proc poolTokens*(amount: int) {.async.} = proc initTokenPool*(cfg: Config) {.async.} = while true: - if tokenPool.filterIt(not it.isLimited).len < cfg.minTokens: - await poolTokens(min(5, cfg.minTokens - tokenPool.len)) + if tokenPool.countIt(not it.isLimited) < cfg.minTokens: + await poolTokens(min(3, cfg.minTokens - tokenPool.len)) await sleepAsync(4000) diff --git a/src/types.nim b/src/types.nim index 942789c..ad3bed1 100644 --- a/src/types.nim +++ b/src/types.nim @@ -6,7 +6,6 @@ genPrefsType() type Token* = ref object tok*: string - limit*: int remaining*: int reset*: Time init*: Time