diff --git a/vlib/net/http/download.v b/vlib/net/http/download.v index 455c1e0507..8ca18f0f31 100644 --- a/vlib/net/http/download.v +++ b/vlib/net/http/download.v @@ -5,14 +5,23 @@ module http import os -pub fn download_file(url string, out string) ? { +// 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) ? { $if debug_http ? { - println('download file url=$url out=$out') + println('http.download_file url=$url out_file_path=$out_file_path') } s := get(url) or { return err } if s.status() != .ok { return error('received http code $s.status_code') } - os.write_file(out, s.text) ? - // download_file_with_progress(url, out, empty, empty) + $if debug_http ? { + println('http.download_file saving $s.text.len bytes') + } + os.write_file(out_file_path, s.text) ? } + +// 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) diff --git a/vlib/net/http/download_nix.c.v b/vlib/net/http/download_nix.c.v index 43a40fe234..134daf8d21 100644 --- a/vlib/net/http/download_nix.c.v +++ b/vlib/net/http/download_nix.c.v @@ -2,51 +2,3 @@ // Use of this source code is governed by an MIT license // that can be found in the LICENSE file. module http - -type DownloadFn = fn (written int) - -/* -struct DownloadStruct { -mut: - stream voidptr - written int - cb DownloadFn -} -*/ -fn download_cb(ptr voidptr, size usize, nmemb usize, userp voidptr) { - /* - mut data := &DownloadStruct(userp) - written := C.fwrite(ptr, size, nmemb, data.stream) - data.written += written - data.cb(data.written) - //#data->cb(data->written); // TODO - return written - */ -} - -pub fn download_file_with_progress(url string, out string, cb DownloadFn, cb_finished fn ()) { - /* - curl := C.curl_easy_init() - if isnil(curl) { - return - } - cout := out.str - fp := C.fopen(cout, 'wb') - C.curl_easy_setopt(curl, CURLOPT_URL, url.str) - C.curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, download_cb) - data := &DownloadStruct { - stream:fp - cb: cb - } - C.curl_easy_setopt(curl, CURLOPT_WRITEDATA, data) - mut d := 0.0 - C.curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &d) - C.curl_easy_perform(curl) - C.curl_easy_cleanup(curl) - C.fclose(fp) - cb_finished() - */ -} - -fn empty() { -} diff --git a/vlib/net/http/download_windows.c.v b/vlib/net/http/download_windows.c.v index 422b6da91d..42849cc514 100644 --- a/vlib/net/http/download_windows.c.v +++ b/vlib/net/http/download_windows.c.v @@ -7,23 +7,3 @@ module http #flag -l urlmon #include - -fn download_file_with_progress(url string, out string, cb voidptr, cb_finished voidptr) { -} - -/* -pub fn download_file(url, out string) { - C.URLDownloadToFile(0, url.to_wide(), out.to_wide(), 0, 0) - /* - if (res == S_OK) { - println('Download Ok') - # } else if(res == E_OUTOFMEMORY) { - println('Buffer length invalid, or insufficient memory') - # } else if(res == INET_E_DOWNLOAD_FAILURE) { - println('URL is invalid') - # } else { - # printf("Download error: %d\n", res); - # } - */ -} -*/