mirror of https://github.com/waku-org/nwaku.git
Fix marshalling of message payloads (#428)
Fix marshalling of message payloads
This commit is contained in:
parent
62b824c387
commit
2fe6935623
|
@ -138,7 +138,10 @@ proc `%`*(value: waku_protocol.Topic): JsonNode =
|
||||||
result = %("0x" & value.toHex)
|
result = %("0x" & value.toHex)
|
||||||
|
|
||||||
proc `%`*(value: seq[byte]): JsonNode =
|
proc `%`*(value: seq[byte]): JsonNode =
|
||||||
result = %("0x" & value.toHex)
|
if value.len > 0:
|
||||||
|
result = %("0x" & value.toHex)
|
||||||
|
else:
|
||||||
|
result = newJArray()
|
||||||
|
|
||||||
# Helpers for the fromJson procs
|
# Helpers for the fromJson procs
|
||||||
|
|
||||||
|
@ -210,12 +213,6 @@ proc fromJson*(n: JsonNode, argName: string, result: var waku_protocol.Topic) =
|
||||||
# Following procs currently required only for testing, the `createRpcSigs` macro
|
# Following procs currently required only for testing, the `createRpcSigs` macro
|
||||||
# requires it as it will convert the JSON results back to the original Nim
|
# requires it as it will convert the JSON results back to the original Nim
|
||||||
# types, but it needs the `fromJson` calls for those specific Nim types to do so
|
# types, but it needs the `fromJson` calls for those specific Nim types to do so
|
||||||
proc fromJson*(n: JsonNode, argName: string, result: var seq[byte]) =
|
|
||||||
n.kind.expect(JString, argName)
|
|
||||||
let hexStr = n.getStr()
|
|
||||||
if not hexStr.isValidHexData:
|
|
||||||
raise newException(ValueError, invalidMsg(argName) & " as a hex data \"" & hexStr & "\"")
|
|
||||||
result = hexToSeqByte(hexStr)
|
|
||||||
|
|
||||||
proc fromJson*(n: JsonNode, argName: string, result: var Hash256) =
|
proc fromJson*(n: JsonNode, argName: string, result: var Hash256) =
|
||||||
n.kind.expect(JString, argName)
|
n.kind.expect(JString, argName)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import
|
import
|
||||||
std/options,
|
std/[options, json, sequtils],
|
||||||
eth/keys,
|
eth/keys,
|
||||||
../../../v1/node/rpc/hexstrings,
|
../../../v1/node/rpc/hexstrings,
|
||||||
../../protocol/waku_store/waku_store_types,
|
../../protocol/waku_store/waku_store_types,
|
||||||
|
@ -8,6 +8,16 @@ import
|
||||||
|
|
||||||
export hexstrings
|
export hexstrings
|
||||||
|
|
||||||
|
## Json marshalling
|
||||||
|
|
||||||
|
proc `%`*(value: WakuMessage): JsonNode =
|
||||||
|
## This ensures that seq[byte] fields are marshalled to hex-format JStrings
|
||||||
|
## (as defined in `hexstrings.nim`) rather than the default JArray[JInt]
|
||||||
|
let jObj = newJObject()
|
||||||
|
for k, v in value.fieldPairs:
|
||||||
|
jObj[k] = %v
|
||||||
|
return jObj
|
||||||
|
|
||||||
## Conversion tools
|
## Conversion tools
|
||||||
## Since the Waku v2 JSON-RPC API has its own defined types,
|
## Since the Waku v2 JSON-RPC API has its own defined types,
|
||||||
## we need to convert between these and the types for the Nim API
|
## we need to convert between these and the types for the Nim API
|
||||||
|
|
Loading…
Reference in New Issue