2022-01-04 10:21:08 +01:00
|
|
|
// Copyright (c) 2019-2022 Alexander Medvednikov. All rights reserved.
|
2019-11-27 07:01:25 +01:00
|
|
|
// Use of this source code is governed by an MIT license
|
|
|
|
// that can be found in the LICENSE file.
|
|
|
|
module http
|
|
|
|
|
|
|
|
import os
|
|
|
|
|
2021-10-24 16:19:34 +02:00
|
|
|
// download_file retrieves a document from the URL `url`,
|
|
|
|
// and saves it in the output file path `out_file_path`.
|
|
|
|
pub fn download_file(url string, out_file_path string) ? {
|
2021-01-26 15:43:10 +01:00
|
|
|
$if debug_http ? {
|
2021-10-24 16:19:34 +02:00
|
|
|
println('http.download_file url=$url out_file_path=$out_file_path')
|
2020-07-04 01:48:01 +02:00
|
|
|
}
|
2021-02-28 21:20:21 +01:00
|
|
|
s := get(url) or { return err }
|
2021-07-24 19:47:45 +02:00
|
|
|
if s.status() != .ok {
|
2021-06-18 00:28:40 +02:00
|
|
|
return error('received http code $s.status_code')
|
|
|
|
}
|
2021-10-24 16:19:34 +02:00
|
|
|
$if debug_http ? {
|
2022-05-29 19:27:18 +02:00
|
|
|
println('http.download_file saving $s.body.len bytes')
|
2021-10-24 16:19:34 +02:00
|
|
|
}
|
2022-05-29 19:27:18 +02:00
|
|
|
os.write_file(out_file_path, s.body)?
|
2019-11-27 07:01:25 +01:00
|
|
|
}
|
2021-10-24 16:19:34 +02:00
|
|
|
|
|
|
|
// TODO: implement download_file_with_progress
|
|
|
|
// type DownloadChunkFn = fn (written int)
|
|
|
|
// type DownloadFinishedFn = fn ()
|
|
|
|
// pub fn download_file_with_progress(url string, out_file_path string, cb_chunk DownloadChunkFn, cb_finished DownloadFinishedFn)
|