aboutsummaryrefslogtreecommitdiff
path: root/src/zip
diff options
context:
space:
mode:
Diffstat (limited to 'src/zip')
-rw-r--r--src/zip/archive.rs10
-rw-r--r--src/zip/driver.rs21
-rw-r--r--src/zip/file.rs2
-rw-r--r--src/zip/mod.rs3
4 files changed, 30 insertions, 6 deletions
diff --git a/src/zip/archive.rs b/src/zip/archive.rs
new file mode 100644
index 0000000..9a244fc
--- /dev/null
+++ b/src/zip/archive.rs
@@ -0,0 +1,10 @@
1use crate::{Archive, Zip};
2use std::io::{Read, Seek, Write};
3
4impl<IO: Read + Seek> Archive<Zip<IO>> {
5 pub fn comment(&self) -> &String {
6 self.driver.comment()
7 }
8}
9
10impl<IO: Read + Write + Seek> Archive<Zip<IO>> {}
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> {}
diff --git a/src/zip/file.rs b/src/zip/file.rs
index b4f2d7c..5b0723f 100644
--- a/src/zip/file.rs
+++ b/src/zip/file.rs
@@ -29,7 +29,7 @@ impl CompressionMethod {
29} 29}
30 30
31pub struct BitFlag { 31pub struct BitFlag {
32 pub flag: u16, 32 flag: u16,
33} 33}
34 34
35pub mod bit { 35pub mod bit {
diff --git a/src/zip/mod.rs b/src/zip/mod.rs
index 23cadb9..89d748b 100644
--- a/src/zip/mod.rs
+++ b/src/zip/mod.rs
@@ -1,3 +1,4 @@
1mod archive;
1mod driver; 2mod driver;
2mod error; 3mod error;
3mod file; 4mod file;
@@ -5,7 +6,7 @@ mod structs;
5 6
6pub use driver::Zip; 7pub use driver::Zip;
7pub use error::{ZipError, ZipResult}; 8pub use error::{ZipError, ZipResult};
8pub use file::ZipFile; 9pub use file::{bit, BitFlag, CompressionMethod, ZipFile};
9 10
10#[cfg(test)] 11#[cfg(test)]
11mod tests; 12mod tests;