class Bitcoin::RPC

Public Class Methods

new(options) click to toggle source
# File lib/bitcoin/rpc.rb, line 4
def initialize(options)
  @user, @pass = options[:user], options[:pass]
  @host, @port = options[:host], options[:port]
  @ssl = options[:ssl]
end

Public Instance Methods

credentials() click to toggle source
# File lib/bitcoin/rpc.rb, line 10
def credentials
  if @user
    "#{@user}:#{@pass}"
  else
    nil
  end
end
dispatch(request) click to toggle source
# File lib/bitcoin/rpc.rb, line 25
def dispatch(request)
  RestClient.post(service_url, request.to_post_data, content_type: :json) do |respdata, request, result|
    response = JSON.parse(respdata)
    raise Bitcoin::Errors::RPCError, response['error'] if response['error']
    response['result']
  end
end
service_url() click to toggle source
# File lib/bitcoin/rpc.rb, line 18
def service_url
  url = @ssl ? "https://" : "http://"
  url.concat "#{credentials}@" if c = credentials
  url.concat "#{@host}:#{@port}"
  url
end

Private Instance Methods

symbolize_keys(hash) click to toggle source
# File lib/bitcoin/rpc.rb, line 34
def symbolize_keys(hash)
  case hash
  when Hash
    hash.inject({}) do |result, (key, value)|
      key = key.to_sym if key.kind_of?(String)
      value = symbolize_keys(value)
      result[key] = value
      result
    end
  when Array
    hash.collect do |ele|
      symbolize_keys(ele)
    end
  else
    hash
  end
end