diff options
Diffstat (limited to 'src/zip')
| -rw-r--r-- | src/zip/archive.rs | 10 | ||||
| -rw-r--r-- | src/zip/driver.rs | 21 | ||||
| -rw-r--r-- | src/zip/file.rs | 2 | ||||
| -rw-r--r-- | src/zip/mod.rs | 3 |
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 @@ | |||
| 1 | use crate::{Archive, Zip}; | ||
| 2 | use std::io::{Read, Seek, Write}; | ||
| 3 | |||
| 4 | impl<IO: Read + Seek> Archive<Zip<IO>> { | ||
| 5 | pub fn comment(&self) -> &String { | ||
| 6 | self.driver.comment() | ||
| 7 | } | ||
| 8 | } | ||
| 9 | |||
| 10 | impl<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, | |||
| 4 | use crate::zip::{ZipError, ZipFile, ZipResult}; | 4 | use crate::zip::{ZipError, ZipFile, ZipResult}; |
| 5 | use chrono::{Local, NaiveDate, NaiveDateTime, NaiveTime}; | 5 | use chrono::{Local, NaiveDate, NaiveDateTime, NaiveTime}; |
| 6 | use std::collections::HashMap as Map; | 6 | use std::collections::HashMap as Map; |
| 7 | use std::fs::File; | ||
| 8 | use std::io::{Read, Seek, SeekFrom, Write}; | 7 | use std::io::{Read, Seek, SeekFrom, Write}; |
| 9 | 8 | ||
| 10 | pub struct Zip<IO = File> { | 9 | pub 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 | ||
| 174 | impl<IO: Read + Seek> Zip<IO> {} | 183 | impl<IO: Read + Seek> Zip<IO> { |
| 184 | pub fn comment(&self) -> &String { | ||
| 185 | &self.comment | ||
| 186 | } | ||
| 187 | } | ||
| 175 | 188 | ||
| 176 | impl<IO: Read + Write + Seek> ArchiveWrite for Zip<IO> {} | 189 | impl<IO: Read + Write + Seek> ArchiveWrite for Zip<IO> {} |
| 177 | 190 | ||
| 178 | impl<IO: Read + Write> Zip<IO> {} | 191 | impl<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 | ||
| 31 | pub struct BitFlag { | 31 | pub struct BitFlag { |
| 32 | pub flag: u16, | 32 | flag: u16, |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | pub mod bit { | 35 | pub 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 @@ | |||
| 1 | mod archive; | ||
| 1 | mod driver; | 2 | mod driver; |
| 2 | mod error; | 3 | mod error; |
| 3 | mod file; | 4 | mod file; |
| @@ -5,7 +6,7 @@ mod structs; | |||
| 5 | 6 | ||
| 6 | pub use driver::Zip; | 7 | pub use driver::Zip; |
| 7 | pub use error::{ZipError, ZipResult}; | 8 | pub use error::{ZipError, ZipResult}; |
| 8 | pub use file::ZipFile; | 9 | pub use file::{bit, BitFlag, CompressionMethod, ZipFile}; |
| 9 | 10 | ||
| 10 | #[cfg(test)] | 11 | #[cfg(test)] |
| 11 | mod tests; | 12 | mod tests; |
