diff options
-rw-r--r-- | lib/pure/asyncfile.nim | 6 | ||||
-rw-r--r-- | lib/pure/httpclient.nim | 14 |
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) |