From 772c57b43c5f62675ae58a2274b19ba90a6e5af0 Mon Sep 17 00:00:00 2001 From: ThetaSinner Date: Wed, 12 Mar 2025 20:55:38 +0000 Subject: [PATCH] feat: Deserialize binary to JSON --- Cargo.lock | 53 +++++++++++++++++++++++++++++------------------- Cargo.toml | 2 +- src/transcode.rs | 11 ++++++++++ 3 files changed, 44 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5925448..bab50ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -84,7 +84,7 @@ dependencies = [ "petgraph", "regex", "serde", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "tracing", "tracing-core", "tracing-serde 0.1.3", @@ -527,7 +527,7 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "serde_path_to_error", "serde_urlencoded", "sync_wrapper", @@ -2537,7 +2537,7 @@ dependencies = [ "sd-notify", "serde", "serde_bytes", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "serde_yaml", "shrinkwraprs", "sodoken 0.0.11", @@ -2611,7 +2611,7 @@ dependencies = [ "reqwest", "serde", "serde_bytes", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", "tracing", "url", @@ -2720,7 +2720,7 @@ dependencies = [ "mockall 0.13.1", "reqwest", "serde", - "serde_json", + "serde_json 1.0.140 (git+https://github.com/ThetaSinner/json.git?branch=master)", "thiserror 2.0.12", "tokio", "tower", @@ -2828,7 +2828,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_bytes", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", "tokio", "tokio-stream", @@ -2859,7 +2859,7 @@ dependencies = [ "serde", "serde-transcode", "serde_bytes", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", ] @@ -2908,7 +2908,7 @@ dependencies = [ "rusqlite", "scheduled-thread-pool", "serde", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "shrinkwraprs", "sodoken 0.0.11", "sqlformat", @@ -2948,7 +2948,7 @@ dependencies = [ "one_err", "parking_lot 0.12.3", "serde", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "shrinkwraprs", "tempfile", "thiserror 1.0.69", @@ -2987,7 +2987,7 @@ dependencies = [ "derive_more", "inferno", "once_cell", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", "tracing", "tracing-core", @@ -3040,7 +3040,7 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "serde_with", "serde_yaml", "shrinkwraprs", @@ -3793,7 +3793,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_bytes", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", "tokio", "tokio-stream", @@ -3999,7 +3999,7 @@ dependencies = [ "rustls 0.21.12", "serde", "serde_bytes", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "sysinfo", "thiserror 1.0.69", "tokio", @@ -4047,7 +4047,7 @@ dependencies = [ "parking_lot 0.12.3", "rcgen", "serde", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "serde_yaml", "tokio", "toml", @@ -4818,7 +4818,7 @@ dependencies = [ "indexmap 1.9.3", "libc", "serde", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -5836,7 +5836,7 @@ dependencies = [ "rustls-pemfile", "rustls-pki-types", "serde", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded", "sync_wrapper", "tokio", @@ -6391,6 +6391,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_json" +version = "1.0.140" +source = "git+https://github.com/ThetaSinner/json.git?branch=master#3e73f79d434d11355cae821821e46c7947d22bd6" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + [[package]] name = "serde_path_to_error" version = "0.1.17" @@ -6435,7 +6446,7 @@ dependencies = [ "indexmap 2.8.0", "serde", "serde_derive", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "serde_with_macros", "time", ] @@ -7304,7 +7315,7 @@ dependencies = [ "once_cell", "regex", "serde", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "sharded-slab", "smallvec", "thread_local", @@ -7385,7 +7396,7 @@ dependencies = [ "bit_field", "futures", "serde", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "tokio", "tracing", "tx5-core", @@ -7404,7 +7415,7 @@ dependencies = [ "once_cell", "rand 0.8.5", "serde", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "sha2", "tempfile", "tokio", @@ -7720,7 +7731,7 @@ dependencies = [ "pin-project", "scoped-tls", "serde", - "serde_json", + "serde_json 1.0.140 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded", "tokio", "tokio-tungstenite", diff --git a/Cargo.toml b/Cargo.toml index ffa1b13..fcd2960 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ holochain_conductor_api = "0.4.1" holochain_types = "0.4.1" holochain_websocket = "0.4.1" serde = { version = "=1.0.203", features = ["derive"] } -serde_json = "1.0.140" +serde_json = { version = "1.0.140", git = "https://github.com/ThetaSinner/json.git", branch = "master" } thiserror = "2.0.11" tokio = { version = "1.43.0", features = ["rt-multi-thread", "macros", "net"] } tracing = "0.1.41" diff --git a/src/transcode.rs b/src/transcode.rs index 89cad37..f66e9c0 100644 --- a/src/transcode.rs +++ b/src/transcode.rs @@ -53,6 +53,7 @@ mod tests { }; use assert2::let_assert; use base64::{prelude::BASE64_URL_SAFE, Engine}; + use holochain_types::dna::ActionHash; use holochain_types::prelude::ExternIO; use serde::{Deserialize, Serialize}; @@ -125,4 +126,14 @@ mod tests { let expected_json_response = serde_json::to_string(&response).unwrap(); assert_eq!(json_response, expected_json_response); } + + // TODO requires https://github.com/serde-rs/json/pull/1247 + #[test] + fn deserialize_binary() { + let output = ExternIO::encode(ActionHash::from_raw_32(vec![2; 32])).unwrap(); + + let json = hsb_to_json(&output).unwrap(); + + assert_eq!(json, "[132,41,36,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,73,61,253]"); + } }