summaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 51b4487..e4ebf76 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -5,10 +5,12 @@ pub mod input;
5pub mod db; 5pub mod db;
6pub mod error; 6pub mod error;
7 7
8use std::io::{Error, ErrorKind}; 8use std::{io::{Error, ErrorKind, Write}, fs::File};
9 9
10pub use apis::*; 10pub use apis::*;
11pub use commands::*; 11pub use commands::*;
12use futures_util::StreamExt;
13use reqwest::Client;
12 14
13#[derive(Debug, Clone, PartialEq, Eq)] 15#[derive(Debug, Clone, PartialEq, Eq)]
14pub enum Modloader { 16pub enum Modloader {
@@ -32,3 +34,23 @@ impl Modloader {
32 } 34 }
33 } 35 }
34} 36}
37
38pub async fn download_file(url: String, path: String, name: String) -> Result<(), Box<dyn std::error::Error>> {
39 println!("Downloading {}", url);
40 let dl_path_file = format!("{}/{}", path, name);
41 let res = Client::new()
42 .get(String::from(&url))
43 .send()
44 .await?;
45
46 // download chunks
47 let mut file = File::create(String::from(&dl_path_file))?;
48 let mut stream = res.bytes_stream();
49
50 while let Some(item) = stream.next().await {
51 let chunk = item?;
52 file.write_all(&chunk)?;
53 }
54
55 Ok(())
56}