Skip to content

Commit a25f1f1

Browse files
lukesteensenerickt
authored andcommitted
collect additional fields on TargetsMetadata
Signed-off-by: Luke Steensen <luke.steensen@gmail.com>
1 parent 37b5166 commit a25f1f1

2 files changed

Lines changed: 18 additions & 0 deletions

File tree

tuf/src/metadata.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1841,6 +1841,7 @@ pub struct TargetsMetadata {
18411841
expires: DateTime<Utc>,
18421842
targets: HashMap<TargetPath, TargetDescription>,
18431843
delegations: Delegations,
1844+
additional_fields: HashMap<String, serde_json::Value>,
18441845
}
18451846

18461847
impl TargetsMetadata {
@@ -1850,6 +1851,7 @@ impl TargetsMetadata {
18501851
expires: DateTime<Utc>,
18511852
targets: HashMap<TargetPath, TargetDescription>,
18521853
delegations: Delegations,
1854+
additional_fields: HashMap<String, serde_json::Value>,
18531855
) -> Result<Self> {
18541856
if version < 1 {
18551857
return Err(Error::MetadataVersionMustBeGreaterThanZero(
@@ -1862,6 +1864,7 @@ impl TargetsMetadata {
18621864
expires,
18631865
targets,
18641866
delegations,
1867+
additional_fields,
18651868
})
18661869
}
18671870

@@ -1874,6 +1877,11 @@ impl TargetsMetadata {
18741877
pub fn delegations(&self) -> &Delegations {
18751878
&self.delegations
18761879
}
1880+
1881+
/// An immutable reference to any additional fields on the metadata.
1882+
pub fn additional_fields(&self) -> &HashMap<String, serde_json::Value> {
1883+
&self.additional_fields
1884+
}
18771885
}
18781886

18791887
impl Metadata for TargetsMetadata {
@@ -1990,6 +1998,7 @@ impl TargetsMetadataBuilder {
19901998
self.expires,
19911999
self.targets,
19922000
self.delegations.unwrap_or_default(),
2001+
Default::default(),
19932002
)
19942003
}
19952004

@@ -3259,6 +3268,7 @@ mod test {
32593268
Utc.with_ymd_and_hms(2038, 1, 1, 0, 0, 0).unwrap(),
32603269
hashmap!(),
32613270
Delegations::default(),
3271+
Default::default(),
32623272
)
32633273
.unwrap();
32643274

tuf/src/pouf/pouf1/shims.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,8 @@ pub struct TargetsMetadata {
291291
targets: BTreeMap<metadata::TargetPath, metadata::TargetDescription>,
292292
#[serde(default, skip_serializing_if = "metadata::Delegations::is_empty")]
293293
delegations: metadata::Delegations,
294+
#[serde(flatten)]
295+
additional_fields: BTreeMap<String, serde_json::Value>,
294296
}
295297

296298
impl TargetsMetadata {
@@ -306,6 +308,11 @@ impl TargetsMetadata {
306308
.map(|(p, d)| (p.clone(), d.clone()))
307309
.collect(),
308310
delegations: metadata.delegations().clone(),
311+
additional_fields: metadata
312+
.additional_fields()
313+
.iter()
314+
.map(|(p, d)| (p.clone(), d.clone()))
315+
.collect(),
309316
})
310317
}
311318

@@ -329,6 +336,7 @@ impl TargetsMetadata {
329336
parse_datetime(&self.expires)?,
330337
self.targets.into_iter().collect(),
331338
self.delegations,
339+
self.additional_fields.into_iter().collect(),
332340
)
333341
}
334342
}

0 commit comments

Comments
 (0)