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,25 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Fisco
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: Fisco::Market::NAME
18
+ )
19
+ end
20
+ market_pairs
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,34 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Fisco
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
+ base = market_pair.base.downcase
12
+ target = market_pair.target.downcase
13
+ "#{Cryptoexchange::Exchanges::Fisco::Market::API_URL}/trades/#{base}_#{target}"
14
+ end
15
+
16
+ def adapt(output, market_pair)
17
+ output.collect do |trade|
18
+ tr = Cryptoexchange::Models::Trade.new
19
+ tr.base = market_pair.base
20
+ tr.target = market_pair.target
21
+ tr.market = Fisco::Market::NAME
22
+ tr.trade_id = trade['tid']
23
+ tr.type = trade['trade_type'] == 'bid' ? 'buy' : 'sell'
24
+ tr.price = trade['price']
25
+ tr.amount = trade['amount']
26
+ tr.timestamp = trade['date']
27
+ tr.payload = trade
28
+ tr
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,4 @@
1
+ :pairs:
2
+ - :base: BTC
3
+ :target: USD
4
+
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Getbtc
3
+ class Market
4
+ NAME = 'getbtc'
5
+ API_URL = 'https://getbtc.org/api'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,39 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Getbtc
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(market_pair))
13
+ adapt(output, market_pair)
14
+ end
15
+
16
+ def ticker_url(market_pair)
17
+ "#{Cryptoexchange::Exchanges::Getbtc::Market::API_URL}/stats?currency=#{market_pair.target}"
18
+ end
19
+
20
+ def adapt(output, market_pair)
21
+ ticker_data = output['stats']
22
+ ticker = Cryptoexchange::Models::Ticker.new
23
+ ticker.base = market_pair.base
24
+ ticker.target = market_pair.target
25
+ ticker.market = Getbtc::Market::NAME
26
+ ticker.ask = NumericHelper.to_d(ticker_data['ask'])
27
+ ticker.bid = NumericHelper.to_d(ticker_data['bid'])
28
+ ticker.last = NumericHelper.to_d(ticker_data['last_price'])
29
+ ticker.high = NumericHelper.to_d(ticker_data['max'])
30
+ ticker.low = NumericHelper.to_d(ticker_data['min'])
31
+ ticker.volume = NumericHelper.to_d(ticker_data['total_btc_traded'])
32
+ ticker.timestamp = Time.now.to_i
33
+ ticker.payload = output
34
+ ticker
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,45 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Getbtc
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::Getbtc::Market::API_URL}/order-book?currency=#{market_pair.target}"
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 = Getbtc::Market::NAME
26
+ order_book.asks = adapt_orders output['order-book']['ask']
27
+ order_book.bids = adapt_orders output['order-book']['bid']
28
+ order_book.timestamp = Time.now.to_i
29
+ order_book.payload = output
30
+ order_book
31
+ end
32
+
33
+ def adapt_orders(orders)
34
+ orders.collect do |order_entry|
35
+ price = order_entry['price']
36
+ amount = order_entry['order_amount']
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,25 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Getbtc
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: Getbtc::Market::NAME
18
+ )
19
+ end
20
+ market_pairs
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,36 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Getbtc
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::Getbtc::Market::API_URL}/transactions?currency=#{market_pair.target}"
12
+ end
13
+
14
+ def adapt(output, market_pair)
15
+ trades = []
16
+ output['transactions'].each_value do |trade|
17
+ next unless trade['currency'] == market_pair.target
18
+
19
+ tr = Cryptoexchange::Models::Trade.new
20
+ tr.base = market_pair.base
21
+ tr.target = market_pair.target
22
+ tr.market = Getbtc::Market::NAME
23
+ tr.trade_id = trade['id']
24
+ tr.type = trade['maker_type']
25
+ tr.price = trade['price']
26
+ tr.amount = trade['btc']
27
+ tr.timestamp = trade['timestamp'].to_i
28
+ tr.payload = trade
29
+ trades << tr
30
+ end
31
+ trades
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Gopax
3
+ class Market
4
+ NAME = 'gopax'
5
+ API_URL = 'https://api.gopax.co.kr'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,43 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Gopax
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
+ ticker1 = super(ticker_url_one(market_pair))
13
+ ticker2 = super(ticker_url_two(market_pair))
14
+ adapt(ticker1, ticker2, market_pair)
15
+ end
16
+
17
+ def ticker_url_one(market_pair)
18
+ "#{Cryptoexchange::Exchanges::Gopax::Market::API_URL}/trading-pairs/#{market_pair.base}-#{market_pair.target}/ticker"
19
+ end
20
+
21
+ def ticker_url_two(market_pair)
22
+ "#{Cryptoexchange::Exchanges::Gopax::Market::API_URL}/trading-pairs/#{market_pair.base}-#{market_pair.target}/stats"
23
+ end
24
+
25
+ def adapt(ticker1, ticker2, market_pair)
26
+ ticker = Cryptoexchange::Models::Ticker.new
27
+ ticker.base = market_pair.base
28
+ ticker.target = market_pair.target
29
+ ticker.market = Gopax::Market::NAME
30
+ ticker.ask = NumericHelper.to_d(ticker1['ask'])
31
+ ticker.bid = NumericHelper.to_d(ticker1['bid'])
32
+ ticker.last = NumericHelper.to_d(ticker1['price'])
33
+ ticker.high = NumericHelper.to_d(ticker2['high'])
34
+ ticker.low = NumericHelper.to_d(ticker2['low'])
35
+ ticker.volume = NumericHelper.to_d(ticker1['volume'])
36
+ ticker.timestamp = DateTime.parse(ticker2['time']).to_time.to_i
37
+ ticker.payload = [ticker1, ticker2]
38
+ ticker
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,42 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Gopax
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(order_book(market_pair))
13
+ adapt(output, market_pair)
14
+ end
15
+
16
+ def order_book(market_pair)
17
+ "#{Cryptoexchange::Exchanges::Gopax::Market::API_URL}/trading-pairs/#{market_pair.base}-#{market_pair.target}/book"
18
+ end
19
+
20
+ def adapt(output, market_pair)
21
+ order_book = Cryptoexchange::Models::OrderBook.new
22
+ order_book.base = market_pair.base
23
+ order_book.target = market_pair.target
24
+ order_book.market = Gopax::Market::NAME
25
+ order_book.asks = adapt_orders(output['ask'])
26
+ order_book.bids = adapt_orders(output['bid'])
27
+ order_book.timestamp = Time.now.to_i
28
+ order_book.payload = output
29
+ order_book
30
+ end
31
+
32
+ def adapt_orders(orders)
33
+ orders.collect do |order_entry|
34
+ Cryptoexchange::Models::Order.new(price: order_entry[1],
35
+ amount: order_entry[2],
36
+ timestamp: Time.now.to_i)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,27 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Gopax
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::Gopax::Market::API_URL}/trading-pairs"
6
+
7
+ def fetch
8
+ output = super
9
+ adapt(output)
10
+ end
11
+
12
+ def adapt(output)
13
+ market_pairs = []
14
+ output.each do |pair|
15
+ market_pairs << Cryptoexchange::Models::MarketPair.new(
16
+ base: pair['baseAsset'],
17
+ target: pair['quoteAsset'],
18
+ market: Gopax::Market::NAME
19
+ )
20
+ end
21
+
22
+ market_pairs
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,32 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Gopax
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::Gopax::Market::API_URL}/trading-pairs/#{market_pair.base}-#{market_pair.target}/trades"
12
+ end
13
+
14
+ def adapt(output, market_pair)
15
+ output.collect do |trade|
16
+ tr = Cryptoexchange::Models::Trade.new
17
+ tr.trade_id = trade['id']
18
+ tr.base = market_pair.base
19
+ tr.target = market_pair.target
20
+ tr.type = trade['side']
21
+ tr.price = trade['price']
22
+ tr.amount = trade['amount']
23
+ tr.timestamp = DateTime.parse(trade['time']).to_time.to_i
24
+ tr.payload = trade
25
+ tr.market = Gopax::Market::NAME
26
+ tr
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -2,7 +2,6 @@ module Cryptoexchange::Exchanges
2
2
  module Huobi
3
3
  class Market
4
4
  NAME = 'huobi'
5
- DOT_COM_API_URL = 'https://be.huobi.com'
6
5
  DOT_PRO_API_URL = 'https://api.huobi.pro'
7
6
  end
8
7
  end
@@ -17,12 +17,7 @@ module Cryptoexchange::Exchanges
17
17
 
18
18
  def ticker_url(market_pair)
19
19
  name = "#{market_pair.base}#{market_pair.target}".downcase
20
-
21
- if market_pair.target == 'CNY'
22
- base = Cryptoexchange::Exchanges::Huobi::Market::DOT_COM_API_URL
23
- else
24
- base = Cryptoexchange::Exchanges::Huobi::Market::DOT_PRO_API_URL
25
- end
20
+ base = Cryptoexchange::Exchanges::Huobi::Market::DOT_PRO_API_URL
26
21
 
27
22
  "#{base}/market/detail/merged?symbol=#{name}"
28
23
  end
@@ -3,7 +3,6 @@ module Cryptoexchange::Exchanges
3
3
  module Services
4
4
  class Pairs < Cryptoexchange::Services::Pairs
5
5
  PAIRS_URLS = [
6
- "#{Cryptoexchange::Exchanges::Huobi::Market::DOT_COM_API_URL}/v1/common/symbols",
7
6
  "#{Cryptoexchange::Exchanges::Huobi::Market::DOT_PRO_API_URL}/v1/common/symbols"
8
7
  ]
9
8
 
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Idex
3
+ class Market
4
+ NAME = 'idex'
5
+ API_URL = 'https://api.idex.market'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,62 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Idex
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 = fetch_using_post(ticker_url, {})
13
+ adapt_all(output)
14
+ end
15
+
16
+ def ticker_url
17
+ "#{Cryptoexchange::Exchanges::Idex::Market::API_URL}/returnTicker"
18
+ end
19
+
20
+ def adapt_all(output)
21
+ total = output.map do |key, value|
22
+ target, base = key.split("_")
23
+ market_pair = Cryptoexchange::Models::MarketPair.new(
24
+ base: base,
25
+ target: target,
26
+ market: Idex::Market::NAME
27
+ )
28
+ adapt(value, market_pair)
29
+ end.compact
30
+ end
31
+
32
+ def adapt(output, market_pair)
33
+ if output['last'] == 'N/A'
34
+ return nil
35
+ end
36
+
37
+ ticker = Cryptoexchange::Models::Ticker.new
38
+ ticker.base = market_pair.base
39
+ ticker.target = market_pair.target
40
+ ticker.market = Cryptoexchange::Exchanges::Idex::Market::NAME
41
+ ticker.ask = NumericHelper.to_d(na_to_nil(output['lowestAsk']))
42
+ ticker.bid = NumericHelper.to_d(na_to_nil(output['highestBid']))
43
+ ticker.last = NumericHelper.to_d(na_to_nil(output['last']))
44
+ ticker.high = NumericHelper.to_d(na_to_nil(output['high']))
45
+ ticker.low = NumericHelper.to_d(na_to_nil(output['low']))
46
+ ticker.volume = NumericHelper.to_d(na_to_nil(output['quoteVolume']))
47
+ ticker.timestamp = Time.now.to_i
48
+ ticker.payload = output
49
+ ticker
50
+ end
51
+
52
+ def na_to_nil(value)
53
+ if value == 'N/A'
54
+ nil
55
+ else
56
+ value
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end