module RubyBtce
Constants
- VERSION
Public Class Methods
account()
click to toggle source
# File lib/RubyBtce.rb, line 100 def self.account request = RubyBtce.api("getInfo", opts={}) if request['success'] == 1 return response = Hashie::Mash.new(request['return']) else return request['error'] end end
all_currencies()
click to toggle source
# File lib/RubyBtce.rb, line 96 def self.all_currencies currencies = 'btc_usd-btc_rur-btc_eur-btc_cnh-btc_gbp-ltc_btc-ltc_usd-ltc_rur-ltc_eur-ltc_cnh-ltc_gbp-nmc_btc-nmc_usd-nvc_btc-nvc_usd-usd_rur-eur_usd-eur_rur-usd_cnh-gbp_usd-trc_btc-ppc_btc-ppc_usd-ftc_btc-xpm_btc' end
api(method, opts)
click to toggle source
# File lib/RubyBtce.rb, line 54 def self.api(method, opts) path = File.join(File.dirname(__FILE__), '..', 'config', 'btce_api.yml') if File.exists?(path) config = YAML.load_file(path) else config = YAML.load_file(File.join(Rails.root, "config", "btce_api.yml")) end key = config['key'] secret = config['secret'] params = {"method" => method, "nonce" => nonce} unless opts.empty? if method == "Trade" opts = cleanup_trade_params(opts) end opts.each do |key, val| params[key.to_s] = val end end payload = params.collect do |key, val| "#{key}=#{CGI::escape(val.to_s)}" end.join('&') signature = OpenSSL::HMAC.hexdigest('sha512', secret, payload) Net::HTTP.start('btc-e.com', 443, :use_ssl => true) do |http| headers = {'Sign' => signature, 'Key' => key} response = http.post('/tapi', payload, headers).body return JSON.parse(response) end end
cancel(opts={})
click to toggle source
# File lib/RubyBtce.rb, line 118 def self.cancel(opts={}) request = RubyBtce.api("CancelOrder", opts) if request['success'] == 1 return response = Hashie::Mash.new(request['return']) else return request['error'] end end
cleanup_trade_params(opts)
click to toggle source
# File lib/RubyBtce.rb, line 19 def self.cleanup_trade_params(opts) price = opts["rate"] amount = opts["amount"] pairs = { "btc_usd" => 3, "btc_eur" => 3, "btc_rur" => 4, "eur_usd" => 4, "eur_rur" => 4, "ftc_btc" => 4, "nvc_btc" => 4, "nvc_usd" => 4, "ppc_btc" => 4, "usd_rur" => 4, "ppc_usd" => 4, "ltc_rur" => 4, "nmc_btc" => 4, "ltc_btc" => 5, "ltc_eur" => 6, "ltc_usd" => 6, "nmc_usd" => 6, "trc_btc" => 6, "xpm_btc" => 6 } pairs.each do |key, val| if opts["pair"] == key opts["rate"] = round_off(price, val) opts["amount"] = round_off(amount, 8) end end return opts end
depth(limit)
click to toggle source
# File lib/RubyBtce.rb, line 168 def self.depth(limit) request = JSON.parse(open("https://btc-e.com/api/3/depth/#{self.all_currencies}?limit=#{limit}").read) return response = Hashie::Mash.new(request) end
new_trade(opts={})
click to toggle source
# File lib/RubyBtce.rb, line 109 def self.new_trade(opts={}) request = RubyBtce.api("Trade", opts) if request['success'] == 1 return response = Hashie::Mash.new(request['return']) else return request['error'] end end
nonce()
click to toggle source
# File lib/RubyBtce.rb, line 89 def self.nonce while result = Time.now.to_i and @nonce and @nonce >= result sleep 1 end return @nonce = result end
order_book(limit)
click to toggle source
# File lib/RubyBtce.rb, line 173 def self.order_book(limit) request = JSON.parse(open("https://btc-e.com/api/3/trades/#{self.all_currencies}?limit=#{limit}").read) return response = Hashie::Mash.new(request) end
orders(opts={})
click to toggle source
# File lib/RubyBtce.rb, line 127 def self.orders(opts={}) request = RubyBtce.api("ActiveOrders", opts) if request['success'] == 1 return response = Hashie::Mash.new(request['return']) else return request['error'] end end
pair_info()
click to toggle source
# File lib/RubyBtce.rb, line 163 def self.pair_info request = JSON.parse(open("https://btc-e.com/api/3/info").read) return response = Hashie::Mash.new(request['pairs']) end
return_error()
click to toggle source
# File lib/RubyBtce.rb, line 9 def self.return_error puts "BTC-e error: you may have sent invalid parameters/credentials, or made requests to frequently." return false end
round_off(value, places)
click to toggle source
# File lib/RubyBtce.rb, line 14 def self.round_off(value, places) result = (value.to_f * (10 ** places)).floor / (10.0 ** places) return result end
ticker()
click to toggle source
# File lib/RubyBtce.rb, line 154 def self.ticker request = JSON.parse(open("https://btc-e.com/api/3/ticker/#{self.all_currencies}").read) if request['success'] == 0 self.return_error else return response = Hashie::Mash.new(request) end end
trades(opts={})
click to toggle source
# File lib/RubyBtce.rb, line 145 def self.trades(opts={}) request = RubyBtce.api("TradeHistory", opts) if request['success'] == 1 return response = Hashie::Mash.new(request['return']) else return request['error'] end end
transactions(opts={})
click to toggle source
# File lib/RubyBtce.rb, line 136 def self.transactions(opts={}) request = RubyBtce.api("TransHistory", opts) if request['success'] == 1 return response = Hashie::Mash.new(request['return']) else return request['error'] end end