summaryrefslogtreecommitdiffstats
path: root/src/launcher/download.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/launcher/download.rs')
-rw-r--r--src/launcher/download.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/launcher/download.rs b/src/launcher/download.rs
index 7d9be73..d8d05f7 100644
--- a/src/launcher/download.rs
+++ b/src/launcher/download.rs
@@ -2,7 +2,7 @@ use std::error::Error;
use std::fmt::{Debug, Display, Formatter};
use std::io::ErrorKind;
use std::path::{Path, PathBuf};
-use futures::{stream, StreamExt, TryStream};
+use futures::{stream, StreamExt, TryStream, TryStreamExt};
use log::{debug, warn};
use reqwest::{Client, IntoUrl, Method, RequestBuilder};
use sha1_smol::{Digest, Sha1};
@@ -281,3 +281,14 @@ impl Download for VerifiedDownload {
Ok(())
}
}
+
+pub async fn verify_files(files: Vec<VerifiedDownload>) -> Result<(), FileVerifyError> {
+ stream::iter(files)
+ .map(|dl| Ok(async move {
+ debug!("Verifying library {}", dl.get_path().display());
+ util::verify_file(dl.get_path(), dl.get_expect_size(), dl.get_expect_sha1()).await
+ }))
+ .try_buffer_unordered(8)
+ .try_fold((), |_, _| async {Ok(())})
+ .await
+}