Class: Bitstamp::Client
- Inherits:
-
Object
- Object
- Bitstamp::Client
- Extended by:
- HTTP::ConversionRates, HTTP::OrderBook, HTTP::Ticker, HTTP::TradingPairs, HTTP::Transactions, Handler, Forwardable
- Includes:
- HTTP::AccountBalance, HTTP::Deposit, HTTP::Orders, HTTP::SubaccountTransfer, HTTP::UserTransactions, HTTP::Withdrawal
- Defined in:
- lib/bitstamp/client.rb
Constant Summary collapse
- BASE_URI =
'https://www.bitstamp.net/api'
- CONNECTTIMEOUT =
1
- TIMEOUT =
10
Class Method Summary collapse
Instance Method Summary collapse
- #build_signature(nonce) ⇒ Object
- #call(request_uri, method, body) ⇒ Object
-
#initialize(customer_id:, api_key:, secret:) ⇒ Client
constructor
A new instance of Client.
- #params_with_signature(params = {}) ⇒ Object
Methods included from HTTP::Transactions
Methods included from HTTP::TradingPairs
Methods included from HTTP::Ticker
Methods included from HTTP::OrderBook
Methods included from HTTP::ConversionRates
Methods included from Handler
Methods included from HTTP::Withdrawal
#bitcoin_withdrawal, #withdrawal_requests
Methods included from HTTP::UserTransactions
Methods included from HTTP::SubaccountTransfer
#transfer_from_main, #transfer_to_main
Methods included from HTTP::Orders
#buy_limit_order, #buy_market_order, #cancel_all_orders, #cancel_order, #open_orders, #order_status, #sell_limit_order, #sell_market_order
Methods included from HTTP::Deposit
#bitcoin_deposit_address, #unconfirmed_bitcoin_deposits
Methods included from HTTP::AccountBalance
Constructor Details
#initialize(customer_id:, api_key:, secret:) ⇒ Client
Returns a new instance of Client.
19 20 21 22 23 |
# File 'lib/bitstamp/client.rb', line 19 def initialize(customer_id:, api_key:, secret:) @customer_id = customer_id @api_key = api_key @secret = secret end |
Class Method Details
.call(request_uri, method, body) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/bitstamp/client.rb', line 44 def call(request_uri, method, body) request_hash = { method: method, body: body, headers: { 'User-Agent' => "Bitstamp::Client Ruby v#{::Bitstamp::VERSION}" }, connecttimeout: CONNECTTIMEOUT, timeout: TIMEOUT } request = ::Typhoeus::Request.new(request_uri, request_hash) response = request.run return handle_body(response.body) end |
.request_uri(*parts) ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/bitstamp/client.rb', line 33 def request_uri(*parts) uri = BASE_URI parts.each do |part| uri += "/" uri += part end return uri + "/" end |
Instance Method Details
#build_signature(nonce) ⇒ Object
88 89 90 91 92 |
# File 'lib/bitstamp/client.rb', line 88 def build_signature(nonce) = nonce + @customer_id + @api_key return OpenSSL::HMAC.hexdigest("SHA256", @secret, ).upcase end |
#call(request_uri, method, body) ⇒ Object
71 72 73 74 75 |
# File 'lib/bitstamp/client.rb', line 71 def call(request_uri, method, body) body = params_with_signature(body) ::Bitstamp::Client.call(request_uri, method, body) end |
#params_with_signature(params = {}) ⇒ Object
77 78 79 80 81 82 83 84 85 86 |
# File 'lib/bitstamp/client.rb', line 77 def params_with_signature(params = {}) if params[:nonce] == nil params[:nonce] = (Time.now.to_f * 1000000).to_i.to_s # Microseconds end params[:key] = @api_key params[:signature] = build_signature(params[:nonce]) return params end |