use std::{io::{Write}, sync::{Arc, RwLock}, thread, time::Duration};
use rcli_loader::loading_element::LoadingElement;
use reqwest::Client;
use tokio::task::JoinHandle;
pub fn sim_download(loading_element: Arc<RwLock<LoadingElement>>) -> JoinHandle<()> {
tokio::spawn(async move {
let url = "https://download.blender.org/demo/movies/BBB/bbb_sunflower_1080p_60fps_normal.mp4.zip";
let client = Client::new();
let mut response = match client.get(url).send().await {
Ok(res) => res,
Err(error) => { print!("Error creating request"); return } };
let total_size = response
.content_length()
.unwrap_or(0);
loading_element.write().unwrap().set_max(total_size as usize);
println!("Total size: {} bytes", total_size);
let mut file = std::fs::File::create("target/output.zip").unwrap();
let mut downloaded: u64 = 0;
while let Some(chunk) = response.chunk().await.unwrap() {
file.write_all(&chunk).unwrap();
loading_element.write().unwrap().update(chunk.len());
}
})
}