diff options
Diffstat (limited to 'src/launcher/download.rs')
| -rw-r--r-- | src/launcher/download.rs | 13 |
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 +} |
