diff --git a/web3/conversions.nim b/web3/conversions.nim index f2a6560..a805f52 100644 --- a/web3/conversions.nim +++ b/web3/conversions.nim @@ -73,11 +73,22 @@ func getEnumStringTable(enumType: typedesc): Table[string, enumType] {.compileTi res[$value] = value res -proc fromJson*(n: JsonNode, argName: string, result: var PayloadExecutionStatus) {.inline.} = +proc fromJson*( + n: JsonNode, argName: string, result: var ForkchoiceUpdatedStatus) {.inline.} = n.kind.expect(JString, argName) const enumStrings = static: getEnumStringTable(type(result)) try: - enumStrings[n.getStr] + result = enumStrings[n.getStr] + except KeyError: + raise newException( + ValueError, "Parameter \"" & argName & "\" value invalid: " & n.getStr) + +proc fromJson*( + n: JsonNode, argName: string, result: var PayloadExecutionStatus) {.inline.} = + n.kind.expect(JString, argName) + const enumStrings = static: getEnumStringTable(type(result)) + try: + result = enumStrings[n.getStr] except KeyError: raise newException( ValueError, "Parameter \"" & argName & "\" value invalid: " & n.getStr) diff --git a/web3/engine_api_types.nim b/web3/engine_api_types.nim index 2992c6b..981e983 100644 --- a/web3/engine_api_types.nim +++ b/web3/engine_api_types.nim @@ -1,5 +1,3 @@ -# https://github.com/ethereum/execution-apis/blob/v1.0.0-alpha.5/src/engine/specification.md - import std/options, ethtypes @@ -37,5 +35,5 @@ type syncing = "SYNCING" ForkchoiceUpdatedResponse* = object - status*: string + status*: ForkchoiceUpdatedStatus payloadId*: Option[PayloadID]