diff options
-rw-r--r-- | lib/pure/httpclient.nim | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/pure/httpclient.nim b/lib/pure/httpclient.nim index 9c39cb53b..4f5a33ee7 100644 --- a/lib/pure/httpclient.nim +++ b/lib/pure/httpclient.nim @@ -1219,6 +1219,9 @@ proc downloadFile*(client: HttpClient, url: Uri | string, filename: string) = defer: client.getBody = true let resp = client.get(url) + + if resp.code.is4xx or resp.code.is5xx: + raise newException(HttpRequestError, resp.status) client.bodyStream = newFileStream(filename, fmWrite) if client.bodyStream.isNil: @@ -1226,14 +1229,14 @@ proc downloadFile*(client: HttpClient, url: Uri | string, filename: string) = parseBody(client, resp.headers, resp.version) client.bodyStream.close() - if resp.code.is4xx or resp.code.is5xx: - raise newException(HttpRequestError, resp.status) - proc downloadFileEx(client: AsyncHttpClient, url: Uri | string, filename: string): Future[void] {.async.} = ## Downloads `url` and saves it to `filename`. client.getBody = false let resp = await client.get(url) + + if resp.code.is4xx or resp.code.is5xx: + raise newException(HttpRequestError, resp.status) client.bodyStream = newFutureStream[string]("downloadFile") var file = openAsync(filename, fmWrite) @@ -1248,9 +1251,6 @@ proc downloadFileEx(client: AsyncHttpClient, # `bodyStream` has been written to the file. await file.writeFromStream(client.bodyStream) - if resp.code.is4xx or resp.code.is5xx: - raise newException(HttpRequestError, resp.status) - proc downloadFile*(client: AsyncHttpClient, url: Uri | string, filename: string): Future[void] = result = newFuture[void]("downloadFile") |