Class: Bitfex::Api

Inherits:
Object
  • Object
show all
Defined in:
lib/bitfex/api.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(server_url: 'https://bitfex.trade') ⇒ Api

Returns a new instance of Api.

Parameters:

  • server_url (String) (defaults to: 'https://bitfex.trade')

    URL of the main server



9
10
11
# File 'lib/bitfex/api.rb', line 9

def initialize(server_url: 'https://bitfex.trade')
  @_server_url = server_url
end

Instance Attribute Details

#tokenObject

Returns the value of attribute token.



6
7
8
# File 'lib/bitfex/api.rb', line 6

def token
  @token
end

Instance Method Details

#auth(email, password) ⇒ Object

Get token for API operations

Parameters:

  • email (String)

    email

  • password (String)

    password

Raises:



26
27
28
29
30
# File 'lib/bitfex/api.rb', line 26

def auth(email, password)
  body = request_post('/auth', auth: { email: email, password: password })
  return @token = body['jwt'] if body['jwt']
  raise AuthError.new
end

#balancesHash<String, Fixnum>

Return account balances

Returns:

  • (Hash<String, Fixnum>)

    balances

Raises:



34
35
36
37
38
# File 'lib/bitfex/api.rb', line 34

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) ⇒ TrueClass

Create new order

Parameters:

  • operation (String)

    operation - one of (buy/sell)

  • pair (String)

    pair (for example: BTC_RUR)

  • amount (Decimal)

    amount in normal units (roubles or bitcoins)

  • price (Decimal)

    price in normal units (roubles or bitcoins)

Returns:

  • (TrueClass)

Raises:



73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/bitfex/api.rb', line 73

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) ⇒ TrueClass

Delete order by id

Parameters:

  • id (Fixnum)

    order ID

Returns:

  • (TrueClass)

Raises:



60
61
62
63
64
# File 'lib/bitfex/api.rb', line 60

def delete_order(id)
  response = request_delete("/api/v1/orders/#{id}")
  raise ApiError.new(response['errors'].to_json) unless response['success']
  true
end

#my_ordersArray<Hash>

Return list of my orders

Returns:

  • (Array<Hash>)

    list of my orders (id, pair, amount, price, operation, completed, updated)

Raises:



50
51
52
53
54
# File 'lib/bitfex/api.rb', line 50

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) ⇒ Array<Hash>

Return list of orders for all pairs

Returns:

  • (Array<Hash>)

    list of orders (id, pair, amount, price, operation, completed, updated)

Raises:



42
43
44
45
46
# File 'lib/bitfex/api.rb', line 42

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_urlString

Returns server url.

Returns:

  • (String)

    server url



14
15
16
# File 'lib/bitfex/api.rb', line 14

def server_url
  @_server_url
end

#server_url=(url) ⇒ Object

Parameters:

  • url (String)

    set URL of the server



19
20
21
# File 'lib/bitfex/api.rb', line 19

def server_url=(url)
  @_server_url = url
end