Class: CoinSync::Importers::BittrexAPI

Inherits:
Base
  • Object
show all
Defined in:
lib/coinsync/importers/bittrex_api.rb

Constant Summary collapse

BASE_URL =
"https://bittrex.com/api/v1.1"

Instance Method Summary collapse

Methods inherited from Base

register_commands, register_importer, registered_commands

Constructor Details

#initialize(config, params = {}) ⇒ BittrexAPI

Returns a new instance of BittrexAPI.



19
20
21
22
23
24
25
# File 'lib/coinsync/importers/bittrex_api.rb', line 19

def initialize(config, params = {})
  super

  # only "Read Info" permission is required for the key
  @api_key = params['api_key']
  @api_secret = params['api_secret']
end

Instance Method Details

#can_build?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/coinsync/importers/bittrex_api.rb', line 31

def can_build?
  false
end

#can_import?(type) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/coinsync/importers/bittrex_api.rb', line 27

def can_import?(type)
  @api_key && @api_secret && [:balances].include?(type)
end

#import_balancesObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/coinsync/importers/bittrex_api.rb', line 35

def import_balances
  response = make_request('/account/getbalances')

  case response
  when Net::HTTPSuccess
    json = JSON.parse(response.body)

    if json['success'] != true || !json['result']
      raise "Bittrex importer: Invalid response: #{response.body}"
    end

    return json['result'].select { |b|
      b['Balance'] > 0
    }.map { |b|
      Balance.new(
        CryptoCurrency.new(b['Currency']),
        available: BigDecimal.new(b['Available'], 0),
        locked: BigDecimal.new(b['Balance'], 0) - BigDecimal.new(b['Available'], 0)
      )
    }
  when Net::HTTPBadRequest
    raise "Bittrex importer: Bad request: #{response}"
  else
    raise "Bittrex importer: Bad response: #{response}"
  end
end