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,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module CoinEgg
3
+ class Market
4
+ NAME = 'coin_egg'
5
+ API_URL = 'https://api.coinegg.com'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,39 @@
1
+ module Cryptoexchange::Exchanges
2
+ module CoinEgg
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::CoinEgg::Market::API_URL}/api/v1/ticker?coin=#{market_pair.base.downcase}"
18
+ end
19
+
20
+ def adapt(output, market_pair)
21
+ ticker = Cryptoexchange::Models::Ticker.new
22
+ ticker.base = market_pair.base
23
+ ticker.target = market_pair.target
24
+ ticker.market = CoinEgg::Market::NAME
25
+ ticker.ask = NumericHelper.to_d(output['sell'])
26
+ ticker.bid = NumericHelper.to_d(output['buy'])
27
+ ticker.last = NumericHelper.to_d(output['last'])
28
+ ticker.high = NumericHelper.to_d(output['high'])
29
+ ticker.low = NumericHelper.to_d(output['low'])
30
+ ticker.volume = NumericHelper.to_d(output['vol'])
31
+ ticker.timestamp = Time.now.to_i
32
+ ticker.payload = output
33
+ ticker
34
+ end
35
+
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,44 @@
1
+ module Cryptoexchange::Exchanges
2
+ module CoinEgg
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::CoinEgg::Market::API_URL}/api/v1/depth?coin=#{market_pair.base.downcase}"
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 = CoinEgg::Market::NAME
26
+ order_book.asks = adapt_orders(output['asks'])
27
+ order_book.bids = adapt_orders(output['bids'])
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, amount = order_entry
36
+ Cryptoexchange::Models::Order.new(price: NumericHelper.to_numeric(price),
37
+ amount: NumericHelper.to_numeric(amount),
38
+ timestamp: nil)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,23 @@
1
+ module Cryptoexchange::Exchanges
2
+ module CoinEgg
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+
6
+ def fetch
7
+ output = super
8
+ market_pairs = []
9
+ output.each do |pair|
10
+ market_pairs << Cryptoexchange::Models::MarketPair.new(
11
+ base: pair[:base],
12
+ target: pair[:target],
13
+ market: CoinEgg::Market::NAME
14
+ )
15
+ end
16
+
17
+ market_pairs
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,32 @@
1
+ module Cryptoexchange::Exchanges
2
+ module CoinEgg
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::CoinEgg::Market::API_URL}/api/v1/orders?coin=#{market_pair.base.downcase}"
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['tid']
18
+ tr.base = market_pair.base
19
+ tr.target = market_pair.target
20
+ tr.market = CoinEgg::Market::NAME
21
+ tr.type = trade['type']
22
+ tr.price = trade['price']
23
+ tr.amount = trade['amount']
24
+ tr.timestamp = trade['date'].to_i
25
+ tr.payload = trade
26
+ tr
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -15,8 +15,8 @@ module Cryptoexchange::Exchanges
15
15
  base: market['MarketAssetCode'],
16
16
  target: market['BaseCurrencyCode'],
17
17
  market: CoinExchange::Market::NAME
18
- })
19
- end
18
+ }) if market['Active']
19
+ end.compact
20
20
  end
21
21
  end
22
22
  end
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Coinex
3
+ class Market
4
+ NAME = 'coinex'
5
+ API_URL = 'https://api.coinex.com/v1'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,53 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Coinex
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::Coinex::Market::API_URL}/market/ticker/all"
18
+ end
19
+
20
+ def adapt_all(output)
21
+ timestamp = output['data']['date'] / 1000
22
+ output['data']['ticker'].map do |pair, market|
23
+ separator = /(USDT|BTC|BCH)\z/ =~ pair
24
+ base = pair[0..separator - 1]
25
+ target = pair[separator..-1]
26
+ market_pair = Cryptoexchange::Models::MarketPair.new(
27
+ base: base,
28
+ target: target,
29
+ market: Coinex::Market::NAME
30
+ )
31
+ adapt(market, market_pair, timestamp)
32
+ end
33
+ end
34
+
35
+ def adapt(output, market_pair, timestamp)
36
+ ticker = Cryptoexchange::Models::Ticker.new
37
+ ticker.base = market_pair.base
38
+ ticker.target = market_pair.target
39
+ ticker.market = Coinex::Market::NAME
40
+ ticker.ask = NumericHelper.to_d(output['sell'])
41
+ ticker.bid = NumericHelper.to_d(output['buy'])
42
+ ticker.last = NumericHelper.to_d(output['last'])
43
+ ticker.high = NumericHelper.to_d(output['high'])
44
+ ticker.low = NumericHelper.to_d(output['low'])
45
+ ticker.volume = NumericHelper.to_d(output['vol'])
46
+ ticker.timestamp = timestamp
47
+ ticker.payload = output
48
+ ticker
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,49 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Coinex
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
+ base = market_pair.base
18
+ target = market_pair.target
19
+ "#{Cryptoexchange::Exchanges::Coinex::Market::API_URL}/market/depth?market=#{base}#{target}&merge=0"
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 = Coinex::Market::NAME
29
+ order_book.asks = adapt_orders output['data']['asks']
30
+ order_book.bids = adapt_orders output['data']['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|
38
+ price, amount = order
39
+ Cryptoexchange::Models::Order.new(
40
+ price: price,
41
+ amount: amount,
42
+ timestamp: nil
43
+ )
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,27 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Coinex
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::Coinex::Market::API_URL}/market/list"
6
+
7
+ def fetch
8
+ output = super
9
+ adapt(output)
10
+ end
11
+
12
+ def adapt(output)
13
+ output['data'].map do |pair|
14
+ separator = /(USDT|BTC|BCH)\z/ =~ pair
15
+ base = pair[0..separator - 1]
16
+ target = pair[separator..-1]
17
+ Cryptoexchange::Models::MarketPair.new({
18
+ base: base,
19
+ target: target,
20
+ market: Coinex::Market::NAME
21
+ })
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,34 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Coinex
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
12
+ target = market_pair.target
13
+ "#{Cryptoexchange::Exchanges::Coinex::Market::API_URL}/market/deals?market=#{base}#{target}"
14
+ end
15
+
16
+ def adapt(output, market_pair)
17
+ output['data'].collect do |trade|
18
+ tr = Cryptoexchange::Models::Trade.new
19
+ tr.trade_id = trade['id']
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['date']
26
+ tr.payload = trade
27
+ tr.market = Coinex::Market::NAME
28
+ tr
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Coinfalcon
3
+ class Market
4
+ NAME = 'coinfalcon'
5
+ API_URL = 'https://coinfalcon.com/api/v1/'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,46 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Coinfalcon
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['data'])
14
+ end
15
+
16
+ def ticker_url
17
+ "#{Cryptoexchange::Exchanges::Coinfalcon::Market::API_URL}markets/"
18
+ end
19
+
20
+ def adapt_all(output)
21
+ output.map do |ticker|
22
+ pair_split= ticker['name'].split('-')
23
+ market_pair = Cryptoexchange::Models::MarketPair.new(
24
+ base: pair_split[0],
25
+ target: pair_split[1],
26
+ market: Coinfalcon::Market::NAME
27
+ )
28
+ adapt(ticker, market_pair)
29
+ end
30
+ end
31
+
32
+ def adapt(output, market_pair)
33
+ ticker = Cryptoexchange::Models::Ticker.new
34
+ ticker.base = market_pair.base
35
+ ticker.target = market_pair.target
36
+ ticker.market = Coinfalcon::Market::NAME
37
+ ticker.last = NumericHelper.to_d(output['last_price'])
38
+ ticker.volume = NumericHelper.to_d(output['volume']) / ticker.last
39
+ ticker.timestamp = Time.now.to_i
40
+ ticker.payload = output
41
+ ticker
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,42 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Coinfalcon
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['data'], market_pair)
14
+ end
15
+
16
+ def ticker_url(market_pair)
17
+ "#{Cryptoexchange::Exchanges::Coinfalcon::Market::API_URL}markets/#{market_pair.base}-#{market_pair.target}/orders"
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 = Coinfalcon::Market::NAME
25
+ order_book.asks = adapt_orders output['asks']
26
+ order_book.bids = adapt_orders output['bids']
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['price'],
35
+ amount: order_entry['size'],
36
+ timestamp: Time.now.to_i)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,28 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Coinfalcon
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::Coinfalcon::Market::API_URL}markets"
6
+
7
+ def fetch
8
+ output = super
9
+ adapt(output['data'])
10
+ end
11
+
12
+ def adapt(output)
13
+ market_pairs = []
14
+ output.each do |pair|
15
+ pair_split = pair['name'].split('-')
16
+ market_pairs << Cryptoexchange::Models::MarketPair.new(
17
+ base: pair_split[0],
18
+ target: pair_split[1],
19
+ market: Coinfalcon::Market::NAME
20
+ )
21
+ end
22
+
23
+ market_pairs
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end