fix(index): make Entry use actual Integrity objects

This commit is contained in:
Kat Marchán 2019-06-03 15:06:26 +02:00
parent fc067e95d9
commit 7ad0633c43
No known key found for this signature in database
GPG Key ID: AEB529C08A3C7E9E
3 changed files with 14 additions and 8 deletions

8
Cargo.lock generated
View File

@ -94,7 +94,7 @@ dependencies = [
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
"sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ssri 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ssri 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
@ -434,12 +434,14 @@ dependencies = [
[[package]] [[package]]
name = "ssri" name = "ssri"
version = "1.1.0" version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [ dependencies = [
"base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)",
"sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
"sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
@ -578,7 +580,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" "checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d"
"checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" "checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68"
"checksum sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d" "checksum sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d"
"checksum ssri 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "476c5b58680af254757d0d8cb1cb0020c98af1eca109a488b316bf5b1a613978" "checksum ssri 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca84a10ff31fe24ceb1bff0c89af7c1104f024a8eda1e563ade3f6046f02a5c4"
"checksum syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)" = "a1393e4a97a19c01e900df2aec855a29f71cf02c402e2f443b8d2747c25c5dbe" "checksum syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)" = "a1393e4a97a19c01e900df2aec855a29f71cf02c402e2f443b8d2747c25c5dbe"
"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" "checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f"
"checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" "checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"

View File

@ -5,7 +5,7 @@ authors = ["Kat Marchán <kzm@zkat.tech>"]
edition = "2018" edition = "2018"
[dependencies] [dependencies]
ssri = "1.1.0" ssri = "1.2.0"
hex = "0.3.2" hex = "0.3.2"
atomicwrites = "0.2.2" atomicwrites = "0.2.2"
tempfile = "3.0.8" tempfile = "3.0.8"

View File

@ -19,8 +19,7 @@ const INDEX_VERSION: &str = "5";
#[derive(PartialEq, Debug)] #[derive(PartialEq, Debug)]
pub struct Entry { pub struct Entry {
key: String, key: String,
// TODO - implement Serialize for Integrity! integrity: Integrity,
integrity: String,
time: u128, time: u128,
size: u128, size: u128,
metadata: Value, metadata: Value,
@ -109,9 +108,14 @@ pub fn find(cache: &Path, key: &str) -> Result<Option<Entry>, Error> {
Ok(bucket_entries(&bucket)?.into_iter().fold(None, |acc, entry| { Ok(bucket_entries(&bucket)?.into_iter().fold(None, |acc, entry| {
if entry.key == key { if entry.key == key {
if entry.integrity.is_some() { if entry.integrity.is_some() {
let integrity = entry.integrity.unwrap();
let integrity: Integrity = match integrity.parse() {
Ok(sri) => sri,
_ => return acc
};
Some(Entry { Some(Entry {
key: entry.key, key: entry.key,
integrity: entry.integrity.unwrap(), integrity,
size: entry.size, size: entry.size,
time: entry.time, time: entry.time,
metadata: entry.metadata metadata: entry.metadata
@ -233,7 +237,7 @@ mod tests {
entry, entry,
Entry { Entry {
key: String::from("hello"), key: String::from("hello"),
integrity: sri.to_string(), integrity: sri,
time, time,
size: 0, size: 0,
metadata: json!(null) metadata: json!(null)