class Bitfex::Api
Attributes
Public Class Methods
@param server_url
[String] URL of the main server @param auth_server_url [String] URL of the auth server
# File lib/bitfex/api.rb, line 10 def initialize(token: nil, server_url: 'https://bitfex.trade') @token = token @_server_url = server_url end
Public Instance Methods
Return account balances @return [Hash<String, Fixnum>] balances
# File lib/bitfex/api.rb, line 27 def balances response = request_get('/api/v1/user') raise ApiError.new(response['errors'].to_json) unless response['success'] response['balances'] end
Create new order @param operation [String] operation - one of (buy/sell) @param pair [String] pair (for example: BTC_RUR) @param amount [Decimal] amount in normal units (roubles or bitcoins) @param price [Decimal] price in normal units (roubles or bitcoins) @return [TrueClass] @raise ApiError(error_json) if response not success
# File lib/bitfex/api.rb, line 67 def create_order(operation, pair, amount, price) response = request_post( '/api/v1/orders', order: { pair: pair, operation: operation, amount: amount, price: price } ) raise ApiError.new(response['error'].to_json) unless response['success'] true end
Delete order by id @param id [Fixnum] order ID @return [TrueClass] @raise ApiError(error_json) if response not success
# File lib/bitfex/api.rb, line 54 def delete_order(id) response = request_delete("/api/v1/orders/#{id}") raise ApiError.new(response['errors'].to_json) unless response['success'] true end
Return list of my orders @return [Array<Hash>] list of my orders (id, pair, amount, price, operation, completed, updated)
# File lib/bitfex/api.rb, line 44 def my_orders response = request_get('/api/v1/orders/my') raise ApiError.new(response['errors'].to_json) unless response['success'] response['orders'] end
Return list of orders for all pairs @return [Array<Hash>] list of orders (id, pair, amount, price, operation, completed, updated)
# File lib/bitfex/api.rb, line 36 def orders_list(pair) response = request_get("/api/v1/orders?pair=#{pair}") raise ApiError.new(response['errors'].to_json) unless response['success'] response['orders'] end
@return [String] server url
# File lib/bitfex/api.rb, line 16 def server_url @_server_url end
@param url [String] set URL of the server
# File lib/bitfex/api.rb, line 21 def server_url=(url) @_server_url = url end
Private Instance Methods
# File lib/bitfex/api.rb, line 96 def request(endpoint, klass, body = nil) url = @_server_url + endpoint uri = URI.parse(url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = uri.port == 443 request = klass.new(uri.request_uri, 'Content-Type' => 'application/json') request.add_field('X-API-Key', token) if token request.body = JSON.dump(body) if body response = http.request(request) JSON.parse(response.body || '{}') end
# File lib/bitfex/api.rb, line 88 def request_delete(endpoint, body = nil) request(endpoint, Net::HTTP::Delete, body) end
# File lib/bitfex/api.rb, line 92 def request_get(endpoint) request(endpoint, Net::HTTP::Get) end
# File lib/bitfex/api.rb, line 84 def request_post(endpoint, body) request(endpoint, Net::HTTP::Post, body) end