Compare commits

...

2 Commits

Author SHA1 Message Date
Anna a06360de19
chore: bump version to 2.1.0 2022-11-17 19:48:10 -05:00
Anna 598c806799
feat: add ability to deserialise from json value 2022-11-17 19:48:04 -05:00
2 changed files with 12 additions and 2 deletions

View File

@ -1,6 +1,6 @@
[package]
name = "ttmp"
version = "2.0.6"
version = "2.1.0"
edition = "2021"
autoexamples = true

View File

@ -2,8 +2,8 @@ use std::io::{Read, Seek};
use serde::de::Error as _;
use serde::Deserialize;
use serde_json::{Deserializer, StreamDeserializer};
use serde_json::de::IoRead;
use serde_json::StreamDeserializer;
pub use zip::{read::ZipFile, ZipArchive};
use crate::error::{Error, Result};
@ -15,6 +15,16 @@ pub mod error;
pub(crate) mod tracking_reader;
pub mod ttmp_extractor;
pub fn from_value(value: serde_json::Value) -> Result<ManifestKind> {
let manifest = if value.is_array() {
ManifestKind::V1(serde_json::from_value(value).map_err(Error::InvalidManifest)?)
} else {
ManifestKind::V2(serde_json::from_value(value).map_err(Error::InvalidManifest)?)
};
Ok(manifest)
}
pub fn from_reader<R: Read + Seek>(reader: R) -> Result<(ManifestKind, ZipArchive<R>)> {
let mut zip = ZipArchive::new(reader).map_err(Error::Zip)?;
let manifest = zip.by_name("TTMPL.mpl").map_err(Error::Zip)?;