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
use crate::error::CoreResult;
use crate::structs::RootObject;
use std::io::Read;
use crate::imp::json_to_rust::validation::validate_root::validate_root;
use crate::imp::json_to_rust::roots::json_file_to_rust::json_file_to_rust;
use crate::imp::json_to_rust::roots::archive_data_to_root::archive_data_to_root_with_hash;
use std::path::Path;
use std::fs::File;
pub fn read_archive_to_root_with_hash<R : Read>(r : &mut R, validation : bool) -> CoreResult<(RootObject, u128)>{
let data = dochy_archiver2::read_archive(json_file_to_rust, r)?;
let (root, hash) = archive_data_to_root_with_hash(data)?;
if validation{
validate_root(&root, false)?;
}
Ok((root, hash))
}
pub fn read_archive_to_root<R : Read>(r : &mut R, validation : bool) -> CoreResult<RootObject>{
read_archive_to_root_with_hash(r, validation).map(|(root,_)| root)
}
pub fn archive_file_to_root_with_hash<P : AsRef<Path>>(archive : P, validation : bool) -> CoreResult<(RootObject, u128)>{
let mut file = File::open(archive)?;
read_archive_to_root_with_hash(&mut file, validation)
}
pub fn archive_file_to_root<P : AsRef<Path>>(archive : P, validation : bool) -> CoreResult<RootObject>{
let (root, _hash) = archive_file_to_root_with_hash(archive, validation)?;
Ok(root)
}