Transform some macro generated code into a generic function
This commit is contained in:
parent
270fd64620
commit
d172765114
44
web3.nim
44
web3.nim
|
@ -656,7 +656,7 @@ macro contract*(cname: untyped, body: untyped): untyped =
|
||||||
result.add quote do:
|
result.add quote do:
|
||||||
type `cbident` = object
|
type `cbident` = object
|
||||||
|
|
||||||
template eventTopic(T: type `cbident`): string =
|
template eventTopic*(T: type `cbident`): string =
|
||||||
"0x" & toLowerAscii($keccak256.digest(`signature`))
|
"0x" & toLowerAscii($keccak256.digest(`signature`))
|
||||||
|
|
||||||
proc subscribe(s: Sender[`cname`],
|
proc subscribe(s: Sender[`cname`],
|
||||||
|
@ -678,29 +678,31 @@ macro contract*(cname: untyped, body: untyped): untyped =
|
||||||
s.web3.subscribeToLogs(options) do(`jsonIdent`: JsonNode):
|
s.web3.subscribeToLogs(options) do(`jsonIdent`: JsonNode):
|
||||||
`argParseBody`
|
`argParseBody`
|
||||||
`callWithRawData`
|
`callWithRawData`
|
||||||
|
|
||||||
proc getJsonLogs(s: Sender[`cname`],
|
|
||||||
t: type `cbident`,
|
|
||||||
fromBlock, toBlock = none(RtBlockIdentifier),
|
|
||||||
blockHash = none(BlockHash)): Future[JsonNode] =
|
|
||||||
var options = newJObject()
|
|
||||||
options["address"] = %s.contractAddress
|
|
||||||
var topics = newJArray()
|
|
||||||
topics.elems.insert(%eventTopic(`cbident`), 0)
|
|
||||||
options["topics"] = topics
|
|
||||||
if blockHash.isSome:
|
|
||||||
doAssert fromBlock.isNone and toBlock.isNone
|
|
||||||
options["blockhash"] = %blockHash.unsafeGet
|
|
||||||
else:
|
|
||||||
if fromBlock.isSome:
|
|
||||||
options["fromBlock"] = %fromBlock.unsafeGet
|
|
||||||
if toBlock.isSome:
|
|
||||||
options["toBlock"] = %toBlock.unsafeGet
|
|
||||||
|
|
||||||
s.web3.provider.eth_getLogs(options)
|
|
||||||
else:
|
else:
|
||||||
discard
|
discard
|
||||||
|
|
||||||
|
proc getJsonLogs*(s: Sender,
|
||||||
|
EventName: type,
|
||||||
|
fromBlock, toBlock = none(RtBlockIdentifier),
|
||||||
|
blockHash = none(BlockHash)): Future[JsonNode] =
|
||||||
|
mixin eventTopic
|
||||||
|
|
||||||
|
var options = newJObject()
|
||||||
|
options["address"] = %s.contractAddress
|
||||||
|
var topics = newJArray()
|
||||||
|
topics.elems.insert(%eventTopic(EventName), 0)
|
||||||
|
options["topics"] = topics
|
||||||
|
if blockHash.isSome:
|
||||||
|
doAssert fromBlock.isNone and toBlock.isNone
|
||||||
|
options["blockhash"] = %blockHash.unsafeGet
|
||||||
|
else:
|
||||||
|
if fromBlock.isSome:
|
||||||
|
options["fromBlock"] = %fromBlock.unsafeGet
|
||||||
|
if toBlock.isSome:
|
||||||
|
options["toBlock"] = %toBlock.unsafeGet
|
||||||
|
|
||||||
|
s.web3.provider.eth_getLogs(options)
|
||||||
|
|
||||||
proc signatureEnabled(w: Web3): bool {.inline.} =
|
proc signatureEnabled(w: Web3): bool {.inline.} =
|
||||||
w.privateKey.verify()
|
w.privateKey.verify()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue