From 63a5a20735da23e7b1c17afe6383a330d269496c Mon Sep 17 00:00:00 2001 From: Vince Buffalo Date: Thu, 22 Feb 2024 16:47:51 -0800 Subject: [PATCH] This is a shim to fix an upstream bug in Zenodo's API, reported in issue #16. There are no plans to push this change to crates.io, unless Zenodo refuses to address the upstream issue. --- src/lib/api/zenodo.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/lib/api/zenodo.rs b/src/lib/api/zenodo.rs index b725daf..358150f 100644 --- a/src/lib/api/zenodo.rs +++ b/src/lib/api/zenodo.rs @@ -57,10 +57,21 @@ pub struct ZenodoFileUpload { delete_marker: bool, } +// NOTE: this is a shim to address issue #16. This is caused by an upstream +// bug in Zenodo. +fn deserialize_filesize<'de, D>(deserializer: D) -> Result +where + D: serde::Deserializer<'de>, +{ + let filesize_float: f64 = serde::Deserialize::deserialize(deserializer)?; + Ok(filesize_float.trunc() as usize) +} + #[derive(Debug, Serialize, Deserialize, Clone)] pub struct ZenodoFile { checksum: String, filename: String, + #[serde(deserialize_with = "deserialize_filesize")] filesize: usize, id: String, links: ZenodoLinks,