aboutsummaryrefslogtreecommitdiff
path: root/src/zip/driver.rs
diff options
context:
space:
mode:
authorIgor Tolmachev <me@igorek.dev>2024-06-27 00:22:52 +0900
committerIgor Tolmachev <me@igorek.dev>2024-06-27 00:22:52 +0900
commita867677218c1d55dadfcac1ca5b8cd32a78a3c28 (patch)
tree563133b148e29a0521401103a53f1ba0912765d2 /src/zip/driver.rs
parent18b613fc0b63cb6e5a9b408ef7f47da8f153d6c6 (diff)
downloadarchivator-a867677218c1d55dadfcac1ca5b8cd32a78a3c28.tar.gz
archivator-a867677218c1d55dadfcac1ca5b8cd32a78a3c28.zip
Implement file getter in archive
Diffstat (limited to 'src/zip/driver.rs')
-rw-r--r--src/zip/driver.rs21
1 files changed, 17 insertions, 4 deletions
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,
4use crate::zip::{ZipError, ZipFile, ZipResult}; 4use crate::zip::{ZipError, ZipFile, ZipResult};
5use chrono::{Local, NaiveDate, NaiveDateTime, NaiveTime}; 5use chrono::{Local, NaiveDate, NaiveDateTime, NaiveTime};
6use std::collections::HashMap as Map; 6use std::collections::HashMap as Map;
7use std::fs::File;
8use std::io::{Read, Seek, SeekFrom, Write}; 7use std::io::{Read, Seek, SeekFrom, Write};
9 8
10pub struct Zip<IO = File> { 9pub struct Zip<IO> {
11 io: IO, 10 io: IO,
12 11
13 files: Map<String, ZipFile>, 12 files: Map<String, ZipFile>,
@@ -169,10 +168,24 @@ impl<IO: Read + Seek> ArchiveRead for Zip<IO> {
169 168
170 Ok(Self { io, files, comment }) 169 Ok(Self { io, files, comment })
171 } 170 }
171
172 fn files(&self) -> Vec<&Self::File> {
173 let mut files: Vec<&Self::File> = self.files.values().collect();
174 files.sort_by_key(|f| &f.name);
175 files
176 }
177
178 fn get_file(&self, name: &str) -> Option<&Self::File> {
179 self.files.get(name)
180 }
172} 181}
173 182
174impl<IO: Read + Seek> Zip<IO> {} 183impl<IO: Read + Seek> Zip<IO> {
184 pub fn comment(&self) -> &String {
185 &self.comment
186 }
187}
175 188
176impl<IO: Read + Write + Seek> ArchiveWrite for Zip<IO> {} 189impl<IO: Read + Write + Seek> ArchiveWrite for Zip<IO> {}
177 190
178impl<IO: Read + Write> Zip<IO> {} 191impl<IO: Read + Write + Seek> Zip<IO> {}