summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ozone/src/launcher.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/ozone/src/launcher.rs b/ozone/src/launcher.rs
index 336ff31..98e8143 100644
--- a/ozone/src/launcher.rs
+++ b/ozone/src/launcher.rs
@@ -597,15 +597,20 @@ impl LibraryRepository {
}
fn create_download(&self, lib: &Library, classifier: Option<&str>) -> Option<Box<dyn FileDownload>> {
- let remote_checksum = |base| {
+ let flat_library = |base| {
let path = LibraryRepository::get_artifact_path(lib.name.as_str(), classifier)?;
let url: String = [base, path.to_string_lossy().as_ref()].into_iter().collect();
- let check_url: String = [url.as_str(), ".sha1"].into_iter().collect();
- Some(Box::new(RemoteChecksumDownload::new(url, check_url, self.home.join(path))) as Box<dyn FileDownload>)
+
+ if let Some(digest) = lib.sha1 {
+ Some(Box::new(VerifiedDownload::new(url, self.home.join(path), lib.size, Some(digest))) as Box<dyn FileDownload>)
+ } else {
+ let check_url: String = [url.as_str(), ".sha1"].into_iter().collect();
+ Some(Box::new(RemoteChecksumDownload::new(url, check_url, self.home.join(path))) as Box<dyn FileDownload>)
+ }
};
if let Some(ref url) = lib.url {
- remote_checksum(url)
+ flat_library(url)
} else if let Some(ref downloads) = lib.downloads {
let dlinfo = downloads.get_download_info(classifier)?;
// drinking game: take a shot once per heap allocation
@@ -613,7 +618,7 @@ impl LibraryRepository {
Some(Box::new(VerifiedDownload::new(dlinfo.url.as_ref()?, path.as_path(), dlinfo.size, dlinfo.sha1)))
} else {
- remote_checksum("https://libraries.minecraft.net/")
+ flat_library("https://libraries.minecraft.net/")
}
}