28 lines
		
	
	
		
			950 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			950 B
		
	
	
	
		
			V
		
	
	
| // Copyright (c) 2019-2022 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
 | |
| 
 | |
| import os
 | |
| 
 | |
| // 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('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')
 | |
| 	}
 | |
| 	$if debug_http ? {
 | |
| 		println('http.download_file saving $s.body.len bytes')
 | |
| 	}
 | |
| 	os.write_file(out_file_path, s.body)?
 | |
| }
 | |
| 
 | |
| // 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)
 |