diff --git a/Cargo.lock b/Cargo.lock index c94c5fc..35ed824 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1265,6 +1265,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-aux" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "184eba62ebddb71658697c8b08822edee89970bf318c5362189f0de27f85b498" +dependencies = [ + "chrono", + "serde", + "serde_json", +] + [[package]] name = "serde_derive" version = "1.0.145" @@ -1687,6 +1698,7 @@ dependencies = [ "rand", "secp256k1 0.26.0", "serde", + "serde-aux", "serde_json", "serial_test", "smart-default", diff --git a/examples/Cargo.lock b/examples/Cargo.lock index f287384..a3d3d1c 100644 --- a/examples/Cargo.lock +++ b/examples/Cargo.lock @@ -1145,6 +1145,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-aux" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "184eba62ebddb71658697c8b08822edee89970bf318c5362189f0de27f85b498" +dependencies = [ + "chrono", + "serde", + "serde_json", +] + [[package]] name = "serde_derive" version = "1.0.151" @@ -1509,6 +1520,7 @@ dependencies = [ "rand", "secp256k1 0.26.0", "serde", + "serde-aux", "serde_json", "smart-default", "sscanf", diff --git a/waku-bindings/Cargo.toml b/waku-bindings/Cargo.toml index a045192..ab66e20 100644 --- a/waku-bindings/Cargo.toml +++ b/waku-bindings/Cargo.toml @@ -28,6 +28,7 @@ smart-default = "0.6" url = "2.3" waku-sys = { version = "0.5.0", path = "../waku-sys" } libc = "0.2" +serde-aux = "4.3.1" [dev-dependencies] futures = "0.3.25" diff --git a/waku-bindings/src/general/mod.rs b/waku-bindings/src/general/mod.rs index 0de4b62..1a665b7 100644 --- a/waku-bindings/src/general/mod.rs +++ b/waku-bindings/src/general/mod.rs @@ -9,6 +9,7 @@ use aes_gcm::{Aes256Gcm, Key}; use base64::Engine; use secp256k1::{ecdsa::Signature, PublicKey, SecretKey}; use serde::{de::Error, Deserialize, Deserializer, Serialize, Serializer}; +use serde_aux::prelude::*; use sscanf::{scanf, RegexRepresentation}; // internal use crate::decrypt::{waku_decode_asymmetric, waku_decode_symmetric}; @@ -71,6 +72,7 @@ pub struct WakuMessage { #[serde(default)] version: WakuMessageVersion, /// Unix timestamp in nanoseconds + #[serde(deserialize_with = "deserialize_number_from_string")] timestamp: usize, #[serde(with = "base64_serde", default = "Vec::new")] meta: Vec,