summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/pure/httpclient.nim12
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")