Module: JsonRpcClient

Defined in:
lib/json_rpc_client/eth.rb

Defined Under Namespace

Classes: Eth, HttpError, JSONRpcError

Class Method Summary collapse

Class Method Details

.request(url, method, params, logger = Logger.new($stdout, level: :info)) ⇒ Object

Raises:



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/json_rpc_client/eth.rb', line 6

def request(
  url, method, params,
  logger = Logger.new($stdout, level: :info)
)
  logger.debug "rpc url: #{url}"

  uri = URI.parse(url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = uri.scheme == "https"

  request = Net::HTTP::Post.new(uri, "Content-Type" => "application/json")
  request.body = { jsonrpc: "2.0", method: method, params: params, id: Time.now.to_i }.to_json
  logger.debug "req body: #{request.body}"

  # https://docs.ruby-lang.org/en/master/Net/HTTPResponse.html
  response = http.request(request)
  raise HttpError, response unless response.is_a?(Net::HTTPOK)

  logger.debug "res body: #{response.body}"
  body = JSON.parse(response.body)
  raise JSONRpcError, body["error"] if body["error"]

  body["result"]
end