use super::FileInfo;
use crate::utils::data_size::DataSize;
use std::path::Path;
use unrar::{Archive, error::UnrarError};
pub fn get_files_in_dir<P>(archive: Archive, folder: &P) -> Result<Vec<FileInfo>, UnrarError>
where
P: AsRef<Path>
{
let mut files = vec![];
for file_entry in archive.open_for_listing()? {
let file_entry = file_entry?;
if file_entry.is_directory() { continue; }
let file_name = &file_entry.filename;
let has_folder = file_name.components().take(2).any(|c| c.as_os_str() == folder.as_ref());
if has_folder {
files.push(FileInfo::new(file_name, DataSize::bytes(file_entry.unpacked_size as usize)));
}
}
Ok(files)
}