Ver Fonte

Improve API error handling

Zed há 4 anos atrás
pai
commit
99d3c46af5
2 ficheiros alterados com 15 adições e 9 exclusões
  1. 9 5
      src/apiutils.nim
  2. 6 4
      src/nitter.nim

+ 9 - 5
src/apiutils.nim

@@ -46,7 +46,9 @@ proc fetch*(url: Uri; oldApi=false): Future[JsonNode] {.async.} =
     var resp: AsyncResponse
     let body = pool.use(headers):
       resp = await c.get($url)
-      uncompress(await resp.body)
+      let raw = await resp.body
+      if raw.len == 0: ""
+      else: uncompress(raw)
 
     if body.startsWith('{') or body.startsWith('['):
       result = parseJson(body)
@@ -64,11 +66,13 @@ proc fetch*(url: Uri; oldApi=false): Future[JsonNode] {.async.} =
       echo "fetch error: ", result.getError
       release(token, true)
       raise rateLimitError()
-  except ZippyError as e:
-    echo "decompression error: ", e.msg, ", url: ", url
-    raise newException(InternalError, "decompression failed: " & $url)
+
+    if resp.status == $Http400:
+      raise newException(InternalError, $url)
+  except InternalError as e:
+    raise e
   except Exception as e:
-    echo "error: ", e.msg, ", token: ", token[], ", url: ", url
+    echo "error: ", e.name, ", msg: ", e.msg, ", token: ", token[], ", url: ", url
     if "length" notin e.msg and "descriptor" notin e.msg:
       release(token, true)
     raise rateLimitError()

+ 6 - 4
src/nitter.nim

@@ -77,14 +77,16 @@ routes:
     resp Http404, showError("Page not found", cfg)
 
   error InternalError:
-    echo error.exc.msg
+    echo error.exc.name, ": ", error.exc.msg
     const link = a("open a GitHub issue", href = issuesUrl)
-    resp Http500, showError(&"An error occurred, please {link} with the URL you tried to visit.", cfg)
+    resp Http500, showError(
+      &"An error occurred, please {link} with the URL you tried to visit.", cfg)
 
   error RateLimitError:
-    echo error.exc.msg
+    echo error.exc.name, ": ", error.exc.msg
     const link = a("another instance", href = instancesUrl)
-    resp Http429, showError(&"Instance has been rate limited.<br>Use {link} or try again later.", cfg)
+    resp Http429, showError(
+      &"Instance has been rate limited.<br>Use {link} or try again later.", cfg)
 
   extend unsupported, ""
   extend preferences, ""