summaryrefslogtreecommitdiffstats
path: root/ipfs-api/src/response/serde.rs
diff options
context:
space:
mode:
authorFerris Tseng <ferristseng@fastmail.fm>2017-11-25 17:18:14 -0500
committerFerris Tseng <ferristseng@fastmail.fm>2017-11-25 17:18:14 -0500
commit5c3c9b170f1415fcbb4c0de28339467bcbca5e29 (patch)
treec871a52c7611df78519c8673e2a1a7034bf337ba /ipfs-api/src/response/serde.rs
parentbe4d9527b0ee4830d5434e6e70415d2f18af0180 (diff)
add dht and better serialization
Diffstat (limited to 'ipfs-api/src/response/serde.rs')
-rw-r--r--ipfs-api/src/response/serde.rs53
1 files changed, 53 insertions, 0 deletions
diff --git a/ipfs-api/src/response/serde.rs b/ipfs-api/src/response/serde.rs
index 307e49e..cb96ba2 100644
--- a/ipfs-api/src/response/serde.rs
+++ b/ipfs-api/src/response/serde.rs
@@ -13,6 +13,59 @@ use std::fmt;
use std::marker::PhantomData;
+pub struct IntegerVisitor;
+
+impl<'de> Visitor<'de> for IntegerVisitor {
+ type Value = i64;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+ formatter.write_str("integer")
+ }
+
+ fn visit_i8<E>(self, num: i8) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ Ok(num as i64)
+ }
+
+ fn visit_i32<E>(self, num: i32) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ Ok(num as i64)
+ }
+
+ fn visit_i64<E>(self, num: i64) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ Ok(num)
+ }
+
+ fn visit_u8<E>(self, num: u8) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ Ok(num as i64)
+ }
+
+ fn visit_u32<E>(self, num: u32) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ Ok(num as i64)
+ }
+
+ fn visit_u64<E>(self, num: u64) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ Ok(num as i64)
+ }
+}
+
+
/// Deserializes a sequence or null values as a vec.
///
pub fn deserialize_vec<'de, T, D>(deserializer: D) -> Result<Vec<T>, D::Error>