module QueruBtce

Constants

VERSION

Public Class Methods

credentials(key: '', secret: '') click to toggle source
# File lib/queru_btce.rb, line 13
def self.credentials(key: '', secret: '')
  @api_key = key
  @api_secret = secret
end
method_missing(m, *args) click to toggle source
Calls superclass method
# File lib/queru_btce.rb, line 78
def self.method_missing(m, *args)
  if trade_api_methods.key? m
    trade_api trade_api_methods[m], *args
  elsif public_api_methods.key? m
    public_api public_api_methods[m], *args
  else
    super
  end
end
nonce() click to toggle source
# File lib/queru_btce.rb, line 49
def self.nonce
  new_nonce = Time.now.to_i
  while new_nonce <= @last_nonce
    sleep 1
    new_nonce = Time.now.to_i
  end
  @last_nonce = new_nonce
end
public_api(m, *pair) click to toggle source
# File lib/queru_btce.rb, line 38
def self.public_api(m, *pair)
  if pair
    pair = pair.join('-') if pair.is_a? Array
    JSON.parse open("https://wex.nz/api/3/#{m}/#{pair}").read, object_class: OpenStruct
  else
    JSON.parse open("https://wex.nz/api/3/#{m}").read, object_class: OpenStruct
  end
rescue OpenURI::HTTPError => e
  raise "BTC-e API down? #{e}"
end
public_api_methods() click to toggle source
# File lib/queru_btce.rb, line 69
def self.public_api_methods
  {
    info: 'info',
    ticker: 'ticker',
    depth: 'depth',
    trades: 'trades'
  }
end
respond_to_missing?(m, _include_all = false) click to toggle source
# File lib/queru_btce.rb, line 88
def self.respond_to_missing?(m, _include_all = false)
  return true if trade_api_methods.key?(m) or public_api_methods.key?(m)
  false
end
trade_api(m, opts = {}) click to toggle source
# File lib/queru_btce.rb, line 18
def self.trade_api(m, opts = {})
  opts[:method] = m
  opts[:nonce] = nonce
  payload = opts.collect do |key, val|
    "#{key}=#{CGI::escape(val.to_s)}"
  end.join('&')

  signature = OpenSSL::HMAC.hexdigest('sha512', @api_secret, payload)

  Net::HTTP.start('wex.nz', 443, use_ssl: true) do |http|
    headers = { 'Sign': signature, 'Key': @api_key }
    response = http.post('/tapi', payload, headers).body
    JSON.parse response, object_class: OpenStruct
  end
rescue Net::HTTPUnauthorized
  raise 'Bad API credentials'
rescue Net::HTTPError
  raise 'HTTP Error: API down?'
end
trade_api_methods() click to toggle source
# File lib/queru_btce.rb, line 58
def self.trade_api_methods
  {
    get_info: 'getInfo',
    trade: 'Trade',
    cancel_order: 'CancelOrder',
    active_orders: 'ActiveOrders',
    trans_history: 'TransHistory',
    trade_history: 'TradeHistory'
  }
end