class Web3::Eth::Rpc
Constants
- DEFAULT_CONNECT_OPTIONS
- DEFAULT_HOST
- DEFAULT_PORT
- JSON_RPC_VERSION
Attributes
connect_options[R]
eth[R]
Public Class Methods
new(host: DEFAULT_HOST, port: DEFAULT_PORT, connect_options: DEFAULT_CONNECT_OPTIONS)
click to toggle source
# File lib/web3/eth/rpc.rb, line 22 def initialize host: DEFAULT_HOST, port: DEFAULT_PORT, connect_options: DEFAULT_CONNECT_OPTIONS @client_id = Random.rand 10000000 @uri = URI((connect_options[:use_ssl] ? 'https' : 'http')+ "://#{host}:#{port}#{connect_options[:rpc_path]}") @connect_options = connect_options @eth = EthModule.new self end
Public Instance Methods
debug()
click to toggle source
# File lib/web3/eth/rpc.rb, line 41 def debug @debug ||= Debug::DebugModule.new(self) end
parity()
click to toggle source
# File lib/web3/eth/rpc.rb, line 37 def parity @parity ||= ParityModule.new(self) end
request(method, params = nil)
click to toggle source
# File lib/web3/eth/rpc.rb, line 45 def request method, params = nil Net::HTTP.start(@uri.host, @uri.port, @connect_options) do |http| request = Net::HTTP::Post.new @uri, {"Content-Type" => "application/json"} request.body = {:jsonrpc => JSON_RPC_VERSION, method: method, params: params, id: @client_id}.compact.to_json response = http.request request raise "Error code #{response.code} on request #{@uri.to_s} #{request.body}" unless response.kind_of? Net::HTTPOK body = JSON.parse(response.body, max_nesting: 1500) if body['result'] body['result'] elsif body['error'] raise "Error #{@uri.to_s} #{body['error']} on request #{@uri.to_s} #{request.body}" else raise "No response on request #{@uri.to_s} #{request.body}" end end end
trace()
click to toggle source
# File lib/web3/eth/rpc.rb, line 33 def trace @trace ||= TraceModule.new(self) end