Преглед изворни кода

Make gzip handling more robust

Zed пре 4 година
родитељ
комит
ddc2be8439
2 измењених фајлова са 8 додато и 7 уклоњено
  1. 8 4
      src/apiutils.nim
  2. 0 3
      src/routes/timeline.nim

+ 8 - 4
src/apiutils.nim

@@ -49,11 +49,15 @@ proc fetch*(url: Uri; oldApi=false): Future[JsonNode] {.async.} =
   let headers = genHeaders(token)
   try:
     var resp: AsyncResponse
-    let body = pool.use(headers):
+    var body = pool.use(headers):
       resp = await c.get($url)
-      let raw = await resp.body
-      if raw.len == 0: ""
-      else: uncompress(raw)
+      await resp.body
+
+    if body.len > 0:
+      if resp.headers.getOrDefault("content-encoding") == "gzip":
+        body = uncompress(body, dfGzip)
+      else:
+        echo "non-gzip body, url: ", url, ", body: ", body
 
     if body.startsWith('{') or body.startsWith('['):
       result = parseJson(body)

+ 0 - 3
src/routes/timeline.nim

@@ -78,9 +78,6 @@ proc fetchSingleTimeline*(after: string; query: Query; skipRail=false):
 
   return (profile, timeline, await rail)
 
-proc get*(req: Request; key: string): string =
-  params(req).getOrDefault(key)
-
 proc showTimeline*(request: Request; query: Query; cfg: Config; prefs: Prefs;
                    rss, after: string): Future[string] {.async.} =
   if query.fromUser.len != 1: