From ad1fe90492fdba536d85c8bfa08c5a90d97a5d34 Mon Sep 17 00:00:00 2001 From: Eric <5089238+emizzle@users.noreply.github.com> Date: Wed, 24 Jan 2024 13:37:13 +1100 Subject: [PATCH] Fix json_rpc.call returning JsonString instead of JsonNode --- ethers/providers/jsonrpc.nim | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/ethers/providers/jsonrpc.nim b/ethers/providers/jsonrpc.nim index 554e88c..303e589 100644 --- a/ethers/providers/jsonrpc.nim +++ b/ethers/providers/jsonrpc.nim @@ -96,12 +96,28 @@ proc new*(_: type JsonRpcProvider, initialized = initialize() JsonRpcProvider(client: awaitClient(), subscriptions: awaitSubscriptions()) -proc send*(provider: JsonRpcProvider, - call: string, - arguments: seq[JsonNode] = @[]): Future[JsonNode] {.async.} = +proc callImpl( + client: RpcClient, + call: string, + args: JsonNode): Future[JsonNode] {.async: (raises: [JsonRpcProviderError]).} = + + without response =? (await client.call(call, %args)).catch, error: + raiseJsonRpcProviderError error.msg + echo "[jsonrpc.callImpl] response: ", response.string + without json =? JsonNode.fromJson(response.string), error: + echo "[jsonrpc.callImpl] error after parsing json: ", error.msg + raiseJsonRpcProviderError "Failed to parse response: " & error.msg + json + + +proc send*( + provider: JsonRpcProvider, + call: string, + arguments: seq[JsonNode] = @[]): Future[JsonNode] {.async.} = convertError: let client = await provider.client return await client.call(call, %arguments) + return await client.callImpl(call, %arguments) proc listAccounts*(provider: JsonRpcProvider): Future[seq[Address]] {.async.} = convertError: