From a867677218c1d55dadfcac1ca5b8cd32a78a3c28 Mon Sep 17 00:00:00 2001 From: Igor Tolmachev Date: Thu, 27 Jun 2024 00:22:52 +0900 Subject: Implement file getter in archive --- src/zip/driver.rs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'src/zip/driver.rs') diff --git a/src/zip/driver.rs b/src/zip/driver.rs index 8662623..650344e 100644 --- a/src/zip/driver.rs +++ b/src/zip/driver.rs @@ -4,10 +4,9 @@ use crate::zip::structs::{deserialize, EOCDR64Locator, ExtraHeader, CDR, EOCDR, use crate::zip::{ZipError, ZipFile, ZipResult}; use chrono::{Local, NaiveDate, NaiveDateTime, NaiveTime}; use std::collections::HashMap as Map; -use std::fs::File; use std::io::{Read, Seek, SeekFrom, Write}; -pub struct Zip { +pub struct Zip { io: IO, files: Map, @@ -169,10 +168,24 @@ impl ArchiveRead for Zip { Ok(Self { io, files, comment }) } + + fn files(&self) -> Vec<&Self::File> { + let mut files: Vec<&Self::File> = self.files.values().collect(); + files.sort_by_key(|f| &f.name); + files + } + + fn get_file(&self, name: &str) -> Option<&Self::File> { + self.files.get(name) + } } -impl Zip {} +impl Zip { + pub fn comment(&self) -> &String { + &self.comment + } +} impl ArchiveWrite for Zip {} -impl Zip {} +impl Zip {} -- cgit v1.2.3