diff --git a/cln-rpc/src/jsonrpc.rs b/cln-rpc/src/jsonrpc.rs index 99a5469b1..a3930d9c3 100644 --- a/cln-rpc/src/jsonrpc.rs +++ b/cln-rpc/src/jsonrpc.rs @@ -9,7 +9,7 @@ use std::fmt::Debug; #[derive(Debug)] pub enum JsonRpc { - Request(usize, R), + Request(serde_json::Value, R), Notification(N), } @@ -38,7 +38,7 @@ where { #[derive(Deserialize, Debug)] struct IdHelper { - id: Option, + id: Option, } let v = Value::deserialize(deserializer)?; diff --git a/cln-rpc/src/lib.rs b/cln-rpc/src/lib.rs index d53ad0cad..cd2758d0a 100644 --- a/cln-rpc/src/lib.rs +++ b/cln-rpc/src/lib.rs @@ -5,6 +5,7 @@ use anyhow::Result; use futures_util::sink::SinkExt; use futures_util::StreamExt; use log::{debug, trace}; +use serde_json::json; use std::path::Path; use std::sync::atomic::AtomicUsize; use std::sync::atomic::Ordering; @@ -60,7 +61,7 @@ impl ClnRpc { // Wrap the raw request in a well-formed JSON-RPC outer dict. let id = self.next_id.fetch_add(1, Ordering::SeqCst); - let req: JsonRpc = JsonRpc::Request(id, req); + let req: JsonRpc = JsonRpc::Request(json!(id), req); let req = serde_json::to_value(req).map_err(|e| RpcError { code: None, message: format!("Error parsing request: {}", e), @@ -137,7 +138,7 @@ mod test { let read_req = dbg!(read.next().await.unwrap().unwrap()); assert_eq!( - json!({"id": 1, "method": "getinfo", "params": {}, "jsonrpc": "2.0"}), + json!({"id": "1", "method": "getinfo", "params": {}, "jsonrpc": "2.0"}), read_req ); } diff --git a/plugins/src/lib.rs b/plugins/src/lib.rs index 1da5f379c..56237d5c0 100644 --- a/plugins/src/lib.rs +++ b/plugins/src/lib.rs @@ -364,7 +364,7 @@ pub struct ConfiguredPlugin where S: Clone + Send, { - init_id: usize, + init_id: serde_json::Value, input: FramedRead, output: Arc>>, plugin: Plugin, @@ -543,7 +543,7 @@ where self.dispatch_notification(n, plugin).await } messages::JsonRpc::CustomRequest(id, p) => { - match self.dispatch_custom_request(id, p, plugin).await { + match self.dispatch_custom_request(id.clone(), p, plugin).await { Ok(v) => plugin .sender .send(json!({ @@ -575,7 +575,7 @@ where } async fn dispatch_request( - _id: usize, + _id: serde_json::Value, _request: messages::Request, _plugin: &Plugin, ) -> Result<(), Error> { @@ -595,7 +595,7 @@ where async fn dispatch_custom_request( &self, - _id: usize, + _id: serde_json::Value, request: serde_json::Value, plugin: &Plugin, ) -> Result { diff --git a/plugins/src/messages.rs b/plugins/src/messages.rs index 9b23e4395..89722b997 100644 --- a/plugins/src/messages.rs +++ b/plugins/src/messages.rs @@ -94,9 +94,9 @@ pub struct ProxyInfo { #[derive(Debug)] pub enum JsonRpc { - Request(usize, R), + Request(serde_json::Value, R), Notification(N), - CustomRequest(usize, Value), + CustomRequest(serde_json::Value, Value), CustomNotification(Value), } @@ -125,7 +125,7 @@ where { #[derive(Deserialize, Debug)] struct IdHelper { - id: Option, + id: Option, } let v = Value::deserialize(deserializer)?; @@ -203,7 +203,7 @@ mod test { "always_use_proxy": false } }, - "id": 10, + "id": "10", }); let req: JsonRpc = serde_json::from_value(value).unwrap(); match req {