cryptoexchange 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +42 -3
  4. data/lib/cryptoexchange/exchanges/aex/market.rb +8 -0
  5. data/lib/cryptoexchange/exchanges/aex/services/market.rb +41 -0
  6. data/lib/cryptoexchange/exchanges/aex/services/order_book.rb +46 -0
  7. data/lib/cryptoexchange/exchanges/aex/services/pairs.rb +33 -0
  8. data/lib/cryptoexchange/exchanges/aex/services/trades.rb +34 -0
  9. data/lib/cryptoexchange/exchanges/bit2c/bit2c.yml +9 -0
  10. data/lib/cryptoexchange/exchanges/bit2c/market.rb +8 -0
  11. data/lib/cryptoexchange/exchanges/bit2c/services/market.rb +36 -0
  12. data/lib/cryptoexchange/exchanges/bit2c/services/order_book.rb +44 -0
  13. data/lib/cryptoexchange/exchanges/bit2c/services/pairs.rb +21 -0
  14. data/lib/cryptoexchange/exchanges/bit2c/services/trades.rb +32 -0
  15. data/lib/cryptoexchange/exchanges/bitbank/bitbank.yml +17 -0
  16. data/lib/cryptoexchange/exchanges/bitbank/market.rb +8 -0
  17. data/lib/cryptoexchange/exchanges/bitbank/services/market.rb +41 -0
  18. data/lib/cryptoexchange/exchanges/bitbank/services/order_book.rb +45 -0
  19. data/lib/cryptoexchange/exchanges/bitbank/services/pairs.rb +24 -0
  20. data/lib/cryptoexchange/exchanges/bitbank/services/trades.rb +34 -0
  21. data/lib/cryptoexchange/exchanges/bitmex/market.rb +8 -0
  22. data/lib/cryptoexchange/exchanges/bitmex/services/market.rb +39 -0
  23. data/lib/cryptoexchange/exchanges/bitmex/services/order_book.rb +55 -0
  24. data/lib/cryptoexchange/exchanges/bitmex/services/pairs.rb +23 -0
  25. data/lib/cryptoexchange/exchanges/bitmex/services/trades.rb +34 -0
  26. data/lib/cryptoexchange/exchanges/bits_blockchain/market.rb +8 -0
  27. data/lib/cryptoexchange/exchanges/bits_blockchain/services/market.rb +40 -0
  28. data/lib/cryptoexchange/exchanges/bits_blockchain/services/order_book.rb +43 -0
  29. data/lib/cryptoexchange/exchanges/bits_blockchain/services/pairs.rb +22 -0
  30. data/lib/cryptoexchange/exchanges/bleutrade/services/market.rb +1 -1
  31. data/lib/cryptoexchange/exchanges/btc_alpha/market.rb +9 -0
  32. data/lib/cryptoexchange/exchanges/btc_alpha/services/market.rb +40 -0
  33. data/lib/cryptoexchange/exchanges/btc_alpha/services/order_book.rb +47 -0
  34. data/lib/cryptoexchange/exchanges/btc_alpha/services/pairs.rb +25 -0
  35. data/lib/cryptoexchange/exchanges/btc_alpha/services/trades.rb +51 -0
  36. data/lib/cryptoexchange/exchanges/btcbox/btcbox.yml +9 -0
  37. data/lib/cryptoexchange/exchanges/btcbox/market.rb +8 -0
  38. data/lib/cryptoexchange/exchanges/btcbox/services/market.rb +39 -0
  39. data/lib/cryptoexchange/exchanges/btcbox/services/order_book.rb +46 -0
  40. data/lib/cryptoexchange/exchanges/btcbox/services/pairs.rb +21 -0
  41. data/lib/cryptoexchange/exchanges/buyucoin/market.rb +8 -0
  42. data/lib/cryptoexchange/exchanges/buyucoin/services/market.rb +51 -0
  43. data/lib/cryptoexchange/exchanges/buyucoin/services/pairs.rb +26 -0
  44. data/lib/cryptoexchange/exchanges/coin_egg/coin_egg.yml +143 -0
  45. data/lib/cryptoexchange/exchanges/coin_egg/market.rb +8 -0
  46. data/lib/cryptoexchange/exchanges/coin_egg/services/market.rb +39 -0
  47. data/lib/cryptoexchange/exchanges/coin_egg/services/order_book.rb +44 -0
  48. data/lib/cryptoexchange/exchanges/coin_egg/services/pairs.rb +23 -0
  49. data/lib/cryptoexchange/exchanges/coin_egg/services/trades.rb +32 -0
  50. data/lib/cryptoexchange/exchanges/coin_exchange/services/pairs.rb +2 -2
  51. data/lib/cryptoexchange/exchanges/coinex/market.rb +8 -0
  52. data/lib/cryptoexchange/exchanges/coinex/services/market.rb +53 -0
  53. data/lib/cryptoexchange/exchanges/coinex/services/order_book.rb +49 -0
  54. data/lib/cryptoexchange/exchanges/coinex/services/pairs.rb +27 -0
  55. data/lib/cryptoexchange/exchanges/coinex/services/trades.rb +34 -0
  56. data/lib/cryptoexchange/exchanges/coinfalcon/market.rb +8 -0
  57. data/lib/cryptoexchange/exchanges/coinfalcon/services/market.rb +46 -0
  58. data/lib/cryptoexchange/exchanges/coinfalcon/services/order_book.rb +42 -0
  59. data/lib/cryptoexchange/exchanges/coinfalcon/services/pairs.rb +28 -0
  60. data/lib/cryptoexchange/exchanges/coinfalcon/services/trades.rb +32 -0
  61. data/lib/cryptoexchange/exchanges/coinhouse/market.rb +8 -0
  62. data/lib/cryptoexchange/exchanges/coinhouse/services/market.rb +52 -0
  63. data/lib/cryptoexchange/exchanges/coinhouse/services/pairs.rb +37 -0
  64. data/lib/cryptoexchange/exchanges/coinone/services/market.rb +5 -5
  65. data/lib/cryptoexchange/exchanges/coinone/services/order_book.rb +50 -0
  66. data/lib/cryptoexchange/exchanges/coinone/services/trades.rb +39 -0
  67. data/lib/cryptoexchange/exchanges/coinrail/market.rb +9 -0
  68. data/lib/cryptoexchange/exchanges/coinrail/services/market.rb +56 -0
  69. data/lib/cryptoexchange/exchanges/coinrail/services/order_book.rb +43 -0
  70. data/lib/cryptoexchange/exchanges/coinrail/services/pairs.rb +36 -0
  71. data/lib/cryptoexchange/exchanges/coinrail/services/trades.rb +30 -0
  72. data/lib/cryptoexchange/exchanges/coinroom/market.rb +8 -0
  73. data/lib/cryptoexchange/exchanges/coinroom/services/market.rb +39 -0
  74. data/lib/cryptoexchange/exchanges/coinroom/services/pairs.rb +30 -0
  75. data/lib/cryptoexchange/exchanges/crex24/market.rb +8 -0
  76. data/lib/cryptoexchange/exchanges/crex24/services/market.rb +50 -0
  77. data/lib/cryptoexchange/exchanges/crex24/services/order_book.rb +46 -0
  78. data/lib/cryptoexchange/exchanges/crex24/services/pairs.rb +25 -0
  79. data/lib/cryptoexchange/exchanges/crex24/services/trades.rb +34 -0
  80. data/lib/cryptoexchange/exchanges/crxzone/market.rb +8 -0
  81. data/lib/cryptoexchange/exchanges/crxzone/services/market.rb +47 -0
  82. data/lib/cryptoexchange/exchanges/crxzone/services/order_book.rb +52 -0
  83. data/lib/cryptoexchange/exchanges/crxzone/services/pairs.rb +31 -0
  84. data/lib/cryptoexchange/exchanges/crxzone/services/trades.rb +43 -0
  85. data/lib/cryptoexchange/exchanges/crypto_hub/market.rb +8 -0
  86. data/lib/cryptoexchange/exchanges/crypto_hub/services/market.rb +49 -0
  87. data/lib/cryptoexchange/exchanges/crypto_hub/services/pairs.rb +25 -0
  88. data/lib/cryptoexchange/exchanges/extstock/market.rb +8 -0
  89. data/lib/cryptoexchange/exchanges/extstock/services/market.rb +40 -0
  90. data/lib/cryptoexchange/exchanges/extstock/services/order_book.rb +51 -0
  91. data/lib/cryptoexchange/exchanges/extstock/services/pairs.rb +31 -0
  92. data/lib/cryptoexchange/exchanges/extstock/services/trades.rb +34 -0
  93. data/lib/cryptoexchange/exchanges/exx/market.rb +8 -0
  94. data/lib/cryptoexchange/exchanges/exx/services/market.rb +50 -0
  95. data/lib/cryptoexchange/exchanges/exx/services/order_book.rb +46 -0
  96. data/lib/cryptoexchange/exchanges/exx/services/pairs.rb +27 -0
  97. data/lib/cryptoexchange/exchanges/exx/services/trades.rb +34 -0
  98. data/lib/cryptoexchange/exchanges/fisco/fisco.yml +11 -0
  99. data/lib/cryptoexchange/exchanges/fisco/market.rb +8 -0
  100. data/lib/cryptoexchange/exchanges/fisco/services/market.rb +40 -0
  101. data/lib/cryptoexchange/exchanges/fisco/services/order_book.rb +46 -0
  102. data/lib/cryptoexchange/exchanges/fisco/services/pairs.rb +25 -0
  103. data/lib/cryptoexchange/exchanges/fisco/services/trades.rb +34 -0
  104. data/lib/cryptoexchange/exchanges/getbtc/getbtc.yml +4 -0
  105. data/lib/cryptoexchange/exchanges/getbtc/market.rb +8 -0
  106. data/lib/cryptoexchange/exchanges/getbtc/services/market.rb +39 -0
  107. data/lib/cryptoexchange/exchanges/getbtc/services/order_book.rb +45 -0
  108. data/lib/cryptoexchange/exchanges/getbtc/services/pairs.rb +25 -0
  109. data/lib/cryptoexchange/exchanges/getbtc/services/trades.rb +36 -0
  110. data/lib/cryptoexchange/exchanges/gopax/market.rb +8 -0
  111. data/lib/cryptoexchange/exchanges/gopax/services/market.rb +43 -0
  112. data/lib/cryptoexchange/exchanges/gopax/services/order_book.rb +42 -0
  113. data/lib/cryptoexchange/exchanges/gopax/services/pairs.rb +27 -0
  114. data/lib/cryptoexchange/exchanges/gopax/services/trades.rb +32 -0
  115. data/lib/cryptoexchange/exchanges/huobi/market.rb +0 -1
  116. data/lib/cryptoexchange/exchanges/huobi/services/market.rb +1 -6
  117. data/lib/cryptoexchange/exchanges/huobi/services/pairs.rb +0 -1
  118. data/lib/cryptoexchange/exchanges/idex/market.rb +8 -0
  119. data/lib/cryptoexchange/exchanges/idex/services/market.rb +62 -0
  120. data/lib/cryptoexchange/exchanges/idex/services/order_book.rb +48 -0
  121. data/lib/cryptoexchange/exchanges/idex/services/pairs.rb +39 -0
  122. data/lib/cryptoexchange/exchanges/idex/services/trades.rb +34 -0
  123. data/lib/cryptoexchange/exchanges/infinity_coin/infinity_coin.yml +3 -0
  124. data/lib/cryptoexchange/exchanges/infinity_coin/market.rb +8 -0
  125. data/lib/cryptoexchange/exchanges/infinity_coin/services/market.rb +37 -0
  126. data/lib/cryptoexchange/exchanges/infinity_coin/services/pairs.rb +25 -0
  127. data/lib/cryptoexchange/exchanges/itbit/services/order_book.rb +45 -0
  128. data/lib/cryptoexchange/exchanges/itbit/services/trades.rb +34 -0
  129. data/lib/cryptoexchange/exchanges/kucoin/services/order_book.rb +48 -0
  130. data/lib/cryptoexchange/exchanges/kucoin/services/trades.rb +31 -0
  131. data/lib/cryptoexchange/exchanges/kyber_network/market.rb +8 -0
  132. data/lib/cryptoexchange/exchanges/kyber_network/services/market.rb +46 -0
  133. data/lib/cryptoexchange/exchanges/kyber_network/services/pairs.rb +28 -0
  134. data/lib/cryptoexchange/exchanges/latoken/market.rb +8 -0
  135. data/lib/cryptoexchange/exchanges/latoken/services/market.rb +38 -0
  136. data/lib/cryptoexchange/exchanges/latoken/services/pairs.rb +27 -0
  137. data/lib/cryptoexchange/exchanges/lbank/market.rb +8 -0
  138. data/lib/cryptoexchange/exchanges/lbank/services/market.rb +43 -0
  139. data/lib/cryptoexchange/exchanges/lbank/services/order_book.rb +46 -0
  140. data/lib/cryptoexchange/exchanges/lbank/services/pairs.rb +30 -0
  141. data/lib/cryptoexchange/exchanges/lbank/services/trades.rb +35 -0
  142. data/lib/cryptoexchange/exchanges/nanex/market.rb +8 -0
  143. data/lib/cryptoexchange/exchanges/nanex/services/market.rb +47 -0
  144. data/lib/cryptoexchange/exchanges/nanex/services/pairs.rb +26 -0
  145. data/lib/cryptoexchange/exchanges/neraex/market.rb +8 -0
  146. data/lib/cryptoexchange/exchanges/neraex/services/market.rb +40 -0
  147. data/lib/cryptoexchange/exchanges/neraex/services/order_book.rb +53 -0
  148. data/lib/cryptoexchange/exchanges/neraex/services/pairs.rb +31 -0
  149. data/lib/cryptoexchange/exchanges/neraex/services/trades.rb +39 -0
  150. data/lib/cryptoexchange/exchanges/nlexch/market.rb +8 -0
  151. data/lib/cryptoexchange/exchanges/nlexch/services/market.rb +40 -0
  152. data/lib/cryptoexchange/exchanges/nlexch/services/pairs.rb +32 -0
  153. data/lib/cryptoexchange/exchanges/paribu/market.rb +8 -0
  154. data/lib/cryptoexchange/exchanges/paribu/services/market.rb +39 -0
  155. data/lib/cryptoexchange/exchanges/paribu/services/pairs.rb +23 -0
  156. data/lib/cryptoexchange/exchanges/paymium/market.rb +8 -0
  157. data/lib/cryptoexchange/exchanges/paymium/paymium.yml +3 -0
  158. data/lib/cryptoexchange/exchanges/paymium/services/market.rb +40 -0
  159. data/lib/cryptoexchange/exchanges/paymium/services/order_book.rb +46 -0
  160. data/lib/cryptoexchange/exchanges/paymium/services/pairs.rb +21 -0
  161. data/lib/cryptoexchange/exchanges/paymium/services/trades.rb +32 -0
  162. data/lib/cryptoexchange/exchanges/rightbtc/market.rb +8 -0
  163. data/lib/cryptoexchange/exchanges/rightbtc/services/market.rb +56 -0
  164. data/lib/cryptoexchange/exchanges/rightbtc/services/order_book.rb +44 -0
  165. data/lib/cryptoexchange/exchanges/rightbtc/services/pairs.rb +24 -0
  166. data/lib/cryptoexchange/exchanges/rightbtc/services/trades.rb +32 -0
  167. data/lib/cryptoexchange/exchanges/south_xchange/market.rb +8 -0
  168. data/lib/cryptoexchange/exchanges/south_xchange/services/market.rb +48 -0
  169. data/lib/cryptoexchange/exchanges/south_xchange/services/order_book.rb +46 -0
  170. data/lib/cryptoexchange/exchanges/south_xchange/services/pairs.rb +24 -0
  171. data/lib/cryptoexchange/exchanges/south_xchange/services/trades.rb +31 -0
  172. data/lib/cryptoexchange/exchanges/trust_dex/market.rb +8 -0
  173. data/lib/cryptoexchange/exchanges/trust_dex/services/market.rb +55 -0
  174. data/lib/cryptoexchange/exchanges/trust_dex/services/pairs.rb +30 -0
  175. data/lib/cryptoexchange/exchanges/upbit/market.rb +9 -0
  176. data/lib/cryptoexchange/exchanges/upbit/services/market.rb +51 -0
  177. data/lib/cryptoexchange/exchanges/upbit/services/pairs.rb +23 -0
  178. data/lib/cryptoexchange/exchanges/waves/market.rb +8 -0
  179. data/lib/cryptoexchange/exchanges/waves/services/market.rb +48 -0
  180. data/lib/cryptoexchange/exchanges/waves/services/pairs.rb +25 -0
  181. data/lib/cryptoexchange/exchanges/waves/services/trades.rb +32 -0
  182. data/lib/cryptoexchange/helpers/numeric_helper.rb +9 -0
  183. data/lib/cryptoexchange/services/market.rb +13 -1
  184. data/lib/cryptoexchange/services/pairs.rb +7 -1
  185. data/lib/cryptoexchange/version.rb +1 -1
  186. metadata +174 -2
@@ -0,0 +1,48 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Idex
3
+ module Services
4
+ class OrderBook < Cryptoexchange::Services::Market
5
+ class << self
6
+ def supports_individual_ticker_query?
7
+ true
8
+ end
9
+ end
10
+
11
+ def fetch(market_pair)
12
+ params = {}
13
+ params['market'] = "#{market_pair.base}_#{market_pair.target}"
14
+ output = fetch_using_post(ticker_url, params)
15
+ adapt(output, market_pair)
16
+ end
17
+
18
+ def ticker_url
19
+ "#{Cryptoexchange::Exchanges::Idex::Market::API_URL}/returnOrderBook"
20
+ end
21
+
22
+ def adapt(output, market_pair)
23
+ order_book = Cryptoexchange::Models::OrderBook.new
24
+ timestamp = Time.now.to_i
25
+
26
+ order_book.base = market_pair.base
27
+ order_book.target = market_pair.target
28
+ order_book.market = Idex::Market::NAME
29
+ order_book.asks = adapt_orders output['asks']
30
+ order_book.bids = adapt_orders output['bids']
31
+ order_book.timestamp = timestamp
32
+ order_book.payload = output
33
+ order_book
34
+ end
35
+
36
+ def adapt_orders(orders)
37
+ orders.collect do |order_entry|
38
+ price = order_entry['price']
39
+ amount = order_entry['amount']
40
+ Cryptoexchange::Models::Order.new(price: price,
41
+ amount: amount,
42
+ timestamp: nil)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,39 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Idex
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::Idex::Market::API_URL}/returnTicker"
6
+
7
+ def fetch
8
+ output = fetch_via_api_using_post
9
+ pair_list = filter_nil_pair(output)
10
+ adapt(pair_list)
11
+ end
12
+
13
+ def filter_nil_pair(output)
14
+ pair_list = []
15
+ output.map do |k, v|
16
+ i = 0
17
+ v.select do |key, value|
18
+ i += 1 if value == "N/A"
19
+ end
20
+ next if i >= 5
21
+ pair_list << k
22
+ end
23
+ pair_list
24
+ end
25
+
26
+ def adapt(pair_list)
27
+ pair_list.map do |pair|
28
+ target, base = pair.split("_")
29
+ Cryptoexchange::Models::MarketPair.new(
30
+ base: base,
31
+ target: target,
32
+ market: Idex::Market::NAME
33
+ )
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,34 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Idex
3
+ module Services
4
+ class Trades < Cryptoexchange::Services::Market
5
+ def fetch(market_pair)
6
+ params = {}
7
+ params['market'] = "#{market_pair.target}_#{market_pair.base}"
8
+ output = fetch_using_post(ticker_url, params)
9
+ adapt(output, market_pair)
10
+ end
11
+
12
+ def ticker_url
13
+ "#{Cryptoexchange::Exchanges::Idex::Market::API_URL}/returnTradeHistory"
14
+ end
15
+
16
+ def adapt(output, market_pair)
17
+ output.collect do |trade|
18
+ tr = Cryptoexchange::Models::Trade.new
19
+ tr.trade_id = trade['uuid']
20
+ tr.base = market_pair.base
21
+ tr.target = market_pair.target
22
+ tr.type = trade['type']
23
+ tr.price = trade['price']
24
+ tr.amount = trade['amount']
25
+ tr.timestamp = trade['timestamp']
26
+ tr.payload = trade
27
+ tr.market = Idex::Market::NAME
28
+ tr
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,3 @@
1
+ :pairs:
2
+ - :base: XIN
3
+ :target: BTC
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module InfinityCoin
3
+ class Market
4
+ NAME = 'infinity_coin'
5
+ API_URL = 'https://infinitycoin.exchange'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,37 @@
1
+ module Cryptoexchange::Exchanges
2
+ module InfinityCoin
3
+ module Services
4
+ class Market < Cryptoexchange::Services::Market
5
+ class << self
6
+ def supports_individual_ticker_query?
7
+ true
8
+ end
9
+ end
10
+
11
+ def fetch(market_pair)
12
+ output = super(ticker_url)
13
+ adapt(output, market_pair)
14
+ end
15
+
16
+ def ticker_url
17
+ "#{Cryptoexchange::Exchanges::InfinityCoin::Market::API_URL}/marketapi"
18
+ end
19
+
20
+ def adapt(output, market_pair)
21
+ market = output['stats']
22
+ ticker = Cryptoexchange::Models::Ticker.new
23
+ ticker.base = market_pair.base
24
+ ticker.target = market_pair.target
25
+ ticker.market = InfinityCoin::Market::NAME
26
+ ticker.last = NumericHelper.to_d(market['last_price'])
27
+ ticker.high = NumericHelper.to_d(market['daily_high'])
28
+ ticker.low = NumericHelper.to_d(market['daily_low'])
29
+ ticker.volume = NumericHelper.to_d(market['xin_volume'])
30
+ ticker.timestamp = Time.now.to_i
31
+ ticker.payload = market
32
+ ticker
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,25 @@
1
+ module Cryptoexchange::Exchanges
2
+ module InfinityCoin
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+
6
+ def fetch
7
+ output = super
8
+ adapt(output)
9
+ end
10
+
11
+ def adapt(output)
12
+ market_pairs = []
13
+ output.each do |pair|
14
+ market_pairs << Cryptoexchange::Models::MarketPair.new(
15
+ base: pair[:base],
16
+ target: pair[:target],
17
+ market: InfinityCoin::Market::NAME
18
+ )
19
+ end
20
+ market_pairs
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,45 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Itbit
3
+ module Services
4
+ class OrderBook < Cryptoexchange::Services::Market
5
+ class << self
6
+ def supports_individual_ticker_query?
7
+ true
8
+ end
9
+ end
10
+
11
+ def fetch(market_pair)
12
+ output = super(ticker_url(market_pair))
13
+ adapt(output, market_pair)
14
+ end
15
+
16
+ def ticker_url(market_pair)
17
+ "#{Cryptoexchange::Exchanges::Itbit::Market::API_URL}/markets/#{market_pair.base}#{market_pair.target}/order_book"
18
+ end
19
+
20
+ def adapt(output, market_pair)
21
+ order_book = Cryptoexchange::Models::OrderBook.new
22
+
23
+ order_book.base = market_pair.base
24
+ order_book.target = market_pair.target
25
+ order_book.market = Itbit::Market::NAME
26
+
27
+ order_book.asks = adapt_orders output['asks']
28
+ order_book.bids = adapt_orders output['bids']
29
+ order_book.timestamp = Time.now.to_i
30
+ order_book.payload = output
31
+ order_book
32
+ end
33
+
34
+ def adapt_orders(orders)
35
+ orders.collect do |order_entry|
36
+ price, amount = order_entry
37
+ Cryptoexchange::Models::Order.new(price: price,
38
+ amount: amount,
39
+ timestamp: nil)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,34 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Itbit
3
+ module Services
4
+ class Trades < Cryptoexchange::Services::Market
5
+ def fetch(market_pair)
6
+ output = super(ticker_url(market_pair))
7
+ adapt(output, market_pair)
8
+ end
9
+
10
+ def ticker_url(market_pair)
11
+ "#{Cryptoexchange::Exchanges::Itbit::Market::API_URL}/markets/#{market_pair.base}#{market_pair.target}/trades"
12
+ end
13
+
14
+ def adapt(output, market_pair)
15
+ trades = output['recentTrades']
16
+ trades.collect do |trade|
17
+ tr = Cryptoexchange::Models::Trade.new
18
+ tr.base = market_pair.base
19
+ tr.target = market_pair.target
20
+ tr.market = Itbit::Market::NAME
21
+
22
+ tr.trade_id = trade['matchNumber']
23
+ tr.price = trade['price']
24
+ tr.amount = trade['amount']
25
+ tr.timestamp = DateTime.strptime(trade['timestamp'],'%FT%T').to_time.to_i
26
+ tr.payload = trade
27
+
28
+ tr
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,48 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Kucoin
3
+ module Services
4
+ class OrderBook < Cryptoexchange::Services::Market
5
+ class << self
6
+ def supports_individual_ticker_query?
7
+ true
8
+ end
9
+ end
10
+
11
+ def fetch(market_pair)
12
+ output = super(ticker_url(market_pair))
13
+ adapt(output, market_pair)
14
+ end
15
+
16
+ def ticker_url(market_pair)
17
+ "#{Cryptoexchange::Exchanges::Kucoin::Market::API_URL}/open/orders?symbol=#{market_pair.base}-#{market_pair.target}"
18
+ end
19
+
20
+ def adapt(output, market_pair)
21
+ order_book = Cryptoexchange::Models::OrderBook.new
22
+ timestamp = Time.now.to_i
23
+
24
+ order_book.base = market_pair.base
25
+ order_book.target = market_pair.target
26
+ order_book.market = Kucoin::Market::NAME
27
+ order_book.asks = adapt_orders output['data']['SELL']
28
+ order_book.bids = adapt_orders output['data']['BUY']
29
+ order_book.timestamp = timestamp
30
+ order_book.payload = output
31
+ order_book
32
+ end
33
+
34
+ def adapt_orders(orders)
35
+ orders.collect do |order_entry|
36
+ price = order_entry[0]
37
+ amount = order_entry[-1]
38
+ Cryptoexchange::Models::Order.new(
39
+ price: price,
40
+ amount: amount,
41
+ timestamp: nil
42
+ )
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,31 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Kucoin
3
+ module Services
4
+ class Trades < Cryptoexchange::Services::Market
5
+ def fetch(market_pair)
6
+ output = super(ticker_url(market_pair))
7
+ adapt(output, market_pair)
8
+ end
9
+
10
+ def ticker_url(market_pair)
11
+ "#{Cryptoexchange::Exchanges::Kucoin::Market::API_URL}/open/deal-orders?symbol=#{market_pair.base}-#{market_pair.target}"
12
+ end
13
+
14
+ def adapt(output, market_pair)
15
+ output['data'].collect do |trade|
16
+ tr = Cryptoexchange::Models::Trade.new
17
+ tr.base = market_pair.base
18
+ tr.target = market_pair.target
19
+ tr.type = trade[1].downcase
20
+ tr.price = trade[2]
21
+ tr.amount = trade[3]
22
+ tr.timestamp = trade[0]/1000
23
+ tr.payload = trade
24
+ tr.market = Kucoin::Market::NAME
25
+ tr
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module KyberNetwork
3
+ class Market
4
+ NAME = 'kyber_network'
5
+ API_URL = 'https://tracker.kyber.network/api'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,46 @@
1
+ module Cryptoexchange::Exchanges
2
+ module KyberNetwork
3
+ module Services
4
+ class Market < Cryptoexchange::Services::Market
5
+ class << self
6
+ def supports_individual_ticker_query?
7
+ false
8
+ end
9
+ end
10
+
11
+ def fetch
12
+ output = super(ticker_url)
13
+ adapt_all(output)
14
+ end
15
+
16
+ def ticker_url
17
+ "#{Cryptoexchange::Exchanges::KyberNetwork::Market::API_URL}/currencies/convertiblePairs"
18
+ end
19
+
20
+ def adapt_all(output)
21
+ tickers = []
22
+
23
+ output.keys.each do |pair|
24
+ target, base = pair.split '_'
25
+
26
+ ticker_json = output[pair]
27
+ ticker = Cryptoexchange::Models::Ticker.new
28
+ ticker.base = base
29
+ ticker.target = target
30
+ ticker.market = KyberNetwork::Market::NAME
31
+
32
+ ticker.last = NumericHelper.to_d(ticker_json['lastPrice'])
33
+ ticker.volume = NumericHelper.to_d(ticker_json['quoteVolume'])
34
+
35
+ ticker.timestamp = ticker_json['lastTimestamp']
36
+ ticker.payload = ticker_json
37
+
38
+ tickers << ticker
39
+ end
40
+
41
+ tickers
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,28 @@
1
+ module Cryptoexchange::Exchanges
2
+ module KyberNetwork
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::KyberNetwork::Market::API_URL}/currencies/convertiblePairs"
6
+
7
+ def fetch
8
+ output = super
9
+ adapt(output)
10
+ end
11
+
12
+ def adapt(output)
13
+ market_pairs = []
14
+ output.keys.each do |pair|
15
+ target, base = pair.split '_'
16
+ market_pairs << Cryptoexchange::Models::MarketPair.new(
17
+ base: base,
18
+ target: target,
19
+ market: KyberNetwork::Market::NAME
20
+ )
21
+ end
22
+
23
+ market_pairs
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end