diff options
author | Araq <rumpf_a@web.de> | 2017-02-25 17:26:03 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2017-02-25 17:26:03 +0100 |
commit | 45765601e051fa26568b1897ea4a0ffb9bb45145 (patch) | |
tree | 2e1eaf8be4d4e64cbdc60aa5ab3076cff7852914 /lib/pure | |
parent | 1961e444c32903d5046f078630e90716c17dff62 (diff) | |
download | Nim-45765601e051fa26568b1897ea4a0ffb9bb45145.tar.gz |
fixed premature finishing of httpclient.downloadFile
Diffstat (limited to 'lib/pure')
-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) |