Improve API error handling
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user