Make gzip handling more robust
This commit is contained in:
		
							parent
							
								
									e3f6c72bf6
								
							
						
					
					
						commit
						ddc2be8439
					
				| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue