1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use crate::error::CobbleResult;
use crate::instance::Instance;
use crate::minecraft::models::asset_index_data::AssetIndexData;
use crate::utils::download::download_file_check;
use std::fs;
impl Instance {
pub fn save_asset_index(&self) -> CobbleResult<()> {
let version_data = self.read_version_data()?;
if let Some(asset_index) = &version_data.asset_index {
let mut indexes_path = self.asset_index_path();
fs::create_dir_all(&indexes_path)?;
indexes_path.push(format!("{}.json", &version_data.assets));
let sha = hex::decode(&asset_index.sha1)?;
download_file_check(&asset_index.url, indexes_path, Some(sha))?;
}
Ok(())
}
pub fn read_asset_index(&self) -> CobbleResult<AssetIndexData> {
let version_data = self.read_version_data()?;
let mut asset_index_path = self.asset_index_path();
asset_index_path.push(format!("{}.json", &version_data.assets));
let asset_index_file = fs::File::open(asset_index_path)?;
let asset_index = serde_json::from_reader::<_, AssetIndexData>(asset_index_file)?;
Ok(asset_index)
}
}