mirror of
https://github.com/status-im/nim-json-rpc.git
synced 2025-02-24 02:08:28 +00:00
263 lines
6.8 KiB
Nim
263 lines
6.8 KiB
Nim
|
import servertypes, json, asyncdispatch, macros
|
||
|
|
||
|
macro rpc*(prc: untyped): untyped =
|
||
|
result = prc
|
||
|
let params = prc.findChild(it.kind == nnkFormalParams)
|
||
|
assert params != nil
|
||
|
for param in params.children:
|
||
|
if param.kind == nnkIdentDefs:
|
||
|
if param[1] == ident("JsonNode"):
|
||
|
return
|
||
|
var identDefs = newNimNode(nnkIdentDefs)
|
||
|
identDefs.add ident("params"), ident("JsonNode"), newEmptyNode()
|
||
|
# proc result
|
||
|
# check there isn't already a result type
|
||
|
assert params.len == 1 and params[0].kind == nnkEmpty
|
||
|
params[0] = ident("JsonNode")
|
||
|
params.add identDefs
|
||
|
# finally, register with server's table.
|
||
|
# this requires a server variable to be passed somehow
|
||
|
|
||
|
#var body = prc.findChild(it.kind == nnkStmtList)
|
||
|
#body.add(quote do:
|
||
|
# server.register "web3_clientVersion", web3_clientVersion
|
||
|
#)
|
||
|
|
||
|
|
||
|
proc web3_clientVersion {.rpc.} =
|
||
|
return %("Nimbus-RPC-Test")
|
||
|
|
||
|
proc web3_sha3 {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc net_version {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc net_peerCount {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc net_listening {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_protocolVersion {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_syncing {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_coinbase {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_mining {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_hashrate {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_gasPrice {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_accounts {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_blockNumber {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getBalance {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getStorageAt {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getTransactionCount {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getBlockTransactionCountByHash {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getBlockTransactionCountByNumber {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getUncleCountByBlockHash {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getUncleCountByBlockNumber {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getCode {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_sign {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_sendTransaction {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_sendRawTransaction {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_call {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_estimateGas {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getBlockByHash {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getBlockByNumber {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getTransactionByHash {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getTransactionByBlockHashAndIndex {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getTransactionByBlockNumberAndIndex {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getTransactionReceipt {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getUncleByBlockHashAndIndex {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getUncleByBlockNumberAndIndex {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getCompilers {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_compileLLL {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_compileSolidity {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_compileSerpent {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_newFilter {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_newBlockFilter {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_newPendingTransactionFilter {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_uninstallFilter {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getFilterChanges {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getFilterLogs {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getLogs {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_getWork {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_submitWork {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc eth_submitHashrate {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc shh_post {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc shh_version {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc shh_newIdentity {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc shh_hasIdentity {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc shh_newGroup {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc shh_addToGroup {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc shh_newFilter {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc shh_uninstallFilter {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc shh_getFilterChanges {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc shh_getMessages {.rpc.} =
|
||
|
discard
|
||
|
|
||
|
proc registerEthereumRpcs*(server: RpcServer) =
|
||
|
## Register all ethereum rpc calls to the server
|
||
|
# TODO: Automate this
|
||
|
server.register "web3_clientVersion", web3_clientVersion
|
||
|
server.register "web3_sha3", web3_sha3
|
||
|
server.register "net_version", net_version
|
||
|
server.register "net_peerCount", net_peerCount
|
||
|
server.register "net_listening", net_listening
|
||
|
server.register "eth_protocolVersion", eth_protocolVersion
|
||
|
server.register "eth_syncing", eth_syncing
|
||
|
server.register "eth_coinbase", eth_coinbase
|
||
|
server.register "eth_mining", eth_mining
|
||
|
server.register "eth_hashrate", eth_hashrate
|
||
|
server.register "eth_gasPrice", eth_gasPrice
|
||
|
server.register "eth_accounts", eth_accounts
|
||
|
server.register "eth_blockNumber", eth_blockNumber
|
||
|
server.register "eth_getBalance", eth_getBalance
|
||
|
server.register "eth_getStorageAt", eth_getStorageAt
|
||
|
server.register "eth_getTransactionCount", eth_getTransactionCount
|
||
|
server.register "eth_getBlockTransactionCountByHash", eth_getBlockTransactionCountByHash
|
||
|
server.register "eth_getBlockTransactionCountByNumber", eth_getBlockTransactionCountByNumber
|
||
|
server.register "eth_getUncleCountByBlockHash", eth_getUncleCountByBlockHash
|
||
|
server.register "eth_getUncleCountByBlockNumber", eth_getUncleCountByBlockNumber
|
||
|
server.register "eth_getCode", eth_getCode
|
||
|
server.register "eth_sign", eth_sign
|
||
|
server.register "eth_sendTransaction", eth_sendTransaction
|
||
|
server.register "eth_sendRawTransaction", eth_sendRawTransaction
|
||
|
server.register "eth_call", eth_call
|
||
|
server.register "eth_estimateGas", eth_estimateGas
|
||
|
server.register "eth_getBlockByHash", eth_getBlockByHash
|
||
|
server.register "eth_getBlockByNumber", eth_getBlockByNumber
|
||
|
server.register "eth_getTransactionByHash", eth_getTransactionByHash
|
||
|
server.register "eth_getTransactionByBlockHashAndIndex", eth_getTransactionByBlockHashAndIndex
|
||
|
server.register "eth_getTransactionByBlockNumberAndIndex", eth_getTransactionByBlockNumberAndIndex
|
||
|
server.register "eth_getTransactionReceipt", eth_getTransactionReceipt
|
||
|
server.register "eth_getUncleByBlockHashAndIndex", eth_getUncleByBlockHashAndIndex
|
||
|
server.register "eth_getUncleByBlockNumberAndIndex", eth_getUncleByBlockNumberAndIndex
|
||
|
server.register "eth_getCompilers", eth_getCompilers
|
||
|
server.register "eth_compileLLL", eth_compileLLL
|
||
|
server.register "eth_compileSolidity", eth_compileSolidity
|
||
|
server.register "eth_compileSerpent", eth_compileSerpent
|
||
|
server.register "eth_newFilter", eth_newFilter
|
||
|
server.register "eth_newBlockFilter", eth_newBlockFilter
|
||
|
server.register "eth_newPendingTransactionFilter", eth_newPendingTransactionFilter
|
||
|
server.register "eth_uninstallFilter", eth_uninstallFilter
|
||
|
server.register "eth_getFilterChanges", eth_getFilterChanges
|
||
|
server.register "eth_getFilterLogs", eth_getFilterLogs
|
||
|
server.register "eth_getLogs", eth_getLogs
|
||
|
server.register "eth_getWork", eth_getWork
|
||
|
server.register "eth_submitWork", eth_submitWork
|
||
|
server.register "eth_submitHashrate", eth_submitHashrate
|
||
|
server.register "shh_post", shh_post
|
||
|
server.register "shh_version", shh_version
|
||
|
server.register "shh_newIdentity", shh_newIdentity
|
||
|
server.register "shh_hasIdentity", shh_hasIdentity
|
||
|
server.register "shh_newGroup", shh_newGroup
|
||
|
server.register "shh_addToGroup", shh_addToGroup
|
||
|
server.register "shh_newFilter", shh_newFilter
|
||
|
server.register "shh_uninstallFilter", shh_uninstallFilter
|
||
|
server.register "shh_getFilterChanges", shh_getFilterChanges
|
||
|
server.register "shh_getMessages", shh_getMessages
|
||
|
|