class Bitfex::Api

Attributes

token[RW]

Public Class Methods

new(token: nil, server_url: 'https://bitfex.trade') click to toggle source

@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

balances() click to toggle source

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_order(operation, pair, amount, price) click to toggle source

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(id) click to toggle source

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
my_orders() click to toggle source

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
orders_list(pair) click to toggle source

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
server_url() click to toggle source

@return [String] server url

# File lib/bitfex/api.rb, line 16
def server_url
  @_server_url
end
server_url=(url) click to toggle source

@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

request(endpoint, klass, body = nil) click to toggle source
# 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
request_delete(endpoint, body = nil) click to toggle source
# File lib/bitfex/api.rb, line 88
def request_delete(endpoint, body = nil)
  request(endpoint, Net::HTTP::Delete, body)
end
request_get(endpoint) click to toggle source
# File lib/bitfex/api.rb, line 92
def request_get(endpoint)
  request(endpoint, Net::HTTP::Get)
end
request_post(endpoint, body) click to toggle source
# File lib/bitfex/api.rb, line 84
def request_post(endpoint, body)
  request(endpoint, Net::HTTP::Post, body)
end