53 lines
1.2 KiB
V
53 lines
1.2 KiB
V
// Copyright (c) 2019-2020 Alexander Medvednikov. All rights reserved.
|
|
// 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)type download_finished_fn fn()
|
|
/*
|
|
struct DownloadStruct {
|
|
mut:
|
|
stream voidptr
|
|
written int
|
|
cb downloadfn
|
|
}
|
|
*/
|
|
fn download_cb(ptr voidptr, size, nmemb size_t, 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, 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() {
|
|
}
|
|
|