summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/pure/asyncfile.nim6
-rw-r--r--lib/pure/httpclient.nim14
2 files changed, 8 insertions, 12 deletions
diff --git a/lib/pure/asyncfile.nim b/lib/pure/asyncfile.nim
index 5a23f3ba2..adfe6edba 100644
--- a/lib/pure/asyncfile.nim
+++ b/lib/pure/asyncfile.nim
@@ -484,7 +484,5 @@ proc writeFromStream(f: AsyncFile, fut: FutureStream[string]) {.async.} =
     else:
       break
 
-proc getWriteStream*(f: AsyncFile): FutureStream[string] =
-  ## Returns a new stream that can be used for writing to the file.
-  result = newFutureStream[string]()
-  asyncCheck writeFromStream(f, result)
+proc setWriteStream*(f: AsyncFile; fut: FutureStream[string]) {.async.} =
+  await writeFromStream(f, fut)
diff --git a/lib/pure/httpclient.nim b/lib/pure/httpclient.nim
index 4f26c078a..8793c3f77 100644
--- a/lib/pure/httpclient.nim
+++ b/lib/pure/httpclient.nim
@@ -1247,16 +1247,14 @@ proc downloadFile*(client: HttpClient | AsyncHttpClient,
     client.bodyStream = newFileStream(filename, fmWrite)
     if client.bodyStream.isNil:
       fileError("Unable to open file")
-  else:
-    var f = openAsync(filename, fmWrite)
-    client.bodyStream = f.getWriteStream()
-
-  await parseBody(client, resp.headers, resp.version)
-
-  when client is HttpClient:
+    parseBody(client, resp.headers, resp.version)
     client.bodyStream.close()
   else:
+    client.bodyStream = newFutureStream[string]()
+    var f = openAsync(filename, fmWrite)
+    asyncCheck parseBody(client, resp.headers, resp.version)
+    await f.setWriteStream(client.bodyStream)
     f.close()
 
   if resp.code.is4xx or resp.code.is5xx:
-    raise newException(HttpRequestError, resp.status)
\ No newline at end of file
+    raise newException(HttpRequestError, resp.status)