class EvmClient::HttpClient

Attributes

host[RW]
port[RW]
proxy[RW]
ssl[RW]
uri[RW]

Public Class Methods

new(host, proxy = nil, log = false) click to toggle source
Calls superclass method EvmClient::Client::new
# File lib/evm_client/http_client.rb, line 7
def initialize(host, proxy = nil, log = false)
  super(log)
  uri = URI.parse(host)
  raise ArgumentError unless ['http', 'https'].include? uri.scheme
  @host = uri.host
  @port = uri.port
  @proxy = proxy
  
  @ssl = uri.scheme == 'https'
  @uri = URI("#{uri.scheme}://#{@host}:#{@port}#{uri.path}")
end

Public Instance Methods

send_batch(batch) click to toggle source
# File lib/evm_client/http_client.rb, line 37
def send_batch(batch)
  result = send_single(batch.to_json)
  result = JSON.parse(result)
  result.sort_by! { |c| c['id'] }
end
send_single(payload) click to toggle source
# File lib/evm_client/http_client.rb, line 19
def send_single(payload)
  if @proxy.present?
    _, p_username, p_password, p_host, p_port = @proxy.gsub(/(:|\/|@)/,' ').squeeze(' ').split
    http = ::Net::HTTP.new(@host, @port, p_host, p_port, p_username, p_password)
  else
    http = ::Net::HTTP.new(@host, @port)
  end

  if @ssl
    http.use_ssl = true
  end
  header = {'Content-Type' => 'application/json'}
  request = ::Net::HTTP::Post.new(uri, header)
  request.body = payload
  response = http.request(request)
  response.body
end