Pārlūkot izejas kodu

Add /.tokens debug endpoint to see token pool

Zed 4 gadi atpakaļ
vecāks
revīzija
f9c9b0d3a4
3 mainītis faili ar 22 papildinājumiem un 1 dzēšanām
  1. 3 1
      src/nitter.nim
  2. 3 0
      src/routes/router_utils.nim
  3. 16 0
      src/tokens.nim

+ 3 - 1
src/nitter.nim

@@ -9,7 +9,7 @@ import jester
 import types, config, prefs, formatters, redis_cache, http_pool, tokens
 import views/[general, about]
 import routes/[
-  preferences, timeline, status, media, search, rss, list,
+  preferences, timeline, status, media, search, rss, list, debug,
   unsupported, embed, resolver, router_utils]
 
 const instancesUrl = "https://github.com/zedeus/nitter/wiki/Instances"
@@ -49,6 +49,7 @@ createSearchRouter(cfg)
 createMediaRouter(cfg)
 createEmbedRouter(cfg)
 createRssRouter(cfg)
+createDebugRouter(cfg)
 
 settings:
   port = Port(cfg.port)
@@ -98,3 +99,4 @@ routes:
   extend status, ""
   extend media, ""
   extend embed, ""
+  extend debug, ""

+ 3 - 0
src/routes/router_utils.nim

@@ -42,3 +42,6 @@ template getCursor*(req: Request): string =
 
 proc getNames*(name: string): seq[string] =
   name.strip(chars={'/'}).split(",").filterIt(it.len > 0)
+
+template respJson*(body: string) =
+  resp body, "application/json"

+ 16 - 0
src/tokens.nim

@@ -14,6 +14,22 @@ var
   tokenPool: seq[Token]
   lastFailed: Time
 
+proc getPoolJson*: string =
+  let list = newJObject()
+  for token in tokenPool:
+    list[token.tok] = %*{
+      "apis": newJObject(),
+      "init": $token.init,
+      "lastUse": $token.lastUse
+    }
+
+    for api in token.apis.keys:
+      list[token.tok]["apis"][$api] = %*{
+        "remaining": token.apis[api].remaining,
+        "reset": $token.apis[api].reset
+      }
+
+  return $list
 
 proc rateLimitError*(): ref RateLimitError =
   newException(RateLimitError, "rate limited")