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,24 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Rightbtc
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::Rightbtc::Market::API_URL}/trading_pairs"
6
+ def fetch
7
+ output = super
8
+ adapt(output)
9
+ end
10
+
11
+ def adapt(output)
12
+ markets = output['status']['message']
13
+ markets.map do |pair|
14
+ Cryptoexchange::Models::MarketPair.new(
15
+ base: pair[1]['bid_asset_symbol'],
16
+ target: pair[1]['ask_asset_symbol'],
17
+ market: Rightbtc::Market::NAME
18
+ )
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,32 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Rightbtc
3
+ module Services
4
+ class Trades < Cryptoexchange::Services::Market
5
+ def fetch(market_pair)
6
+ output = super(trades_url(market_pair))
7
+ adapt(output['result'], market_pair)
8
+ end
9
+
10
+ def trades_url(market_pair)
11
+ "#{Cryptoexchange::Exchanges::Rightbtc::Market::API_URL}/trades/#{market_pair.base}#{market_pair.target}"
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 = Rightbtc::Market::NAME
21
+ tr.type = trade['side'].downcase
22
+ tr.price = trade['price']
23
+ tr.amount = trade['amount']
24
+ tr.timestamp = Time.now.to_i
25
+ tr.payload = trade
26
+ tr
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module SouthXchange
3
+ class Market
4
+ NAME = 'south_xchange'
5
+ API_URL = 'https://www.southxchange.com/api'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,48 @@
1
+ module Cryptoexchange::Exchanges
2
+ module SouthXchange
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(self.ticker_url)
13
+ adapt_all(output)
14
+ end
15
+
16
+ def ticker_url
17
+ "#{Cryptoexchange::Exchanges::SouthXchange::Market::API_URL}/prices"
18
+ end
19
+
20
+ def adapt_all(output)
21
+ output.map do |pair|
22
+ base, target = pair['Market'].split('/')
23
+ market_pair = Cryptoexchange::Models::MarketPair.new(
24
+ base: base,
25
+ target: target,
26
+ market: SouthXchange::Market::NAME
27
+ )
28
+ adapt(pair, 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 = SouthXchange::Market::NAME
37
+ ticker.last = NumericHelper.to_d(output['Last'])
38
+ ticker.bid = NumericHelper.to_d(output['Bid'])
39
+ ticker.ask = NumericHelper.to_d(output['Ask'])
40
+ ticker.volume = NumericHelper.to_d(output['Volume24Hr'])
41
+ ticker.timestamp = Time.now.to_time.to_i
42
+ ticker.payload = output
43
+ ticker
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,46 @@
1
+ module Cryptoexchange::Exchanges
2
+ module SouthXchange
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::SouthXchange::Market::API_URL}/book/#{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 = SouthXchange::Market::NAME
27
+ order_book.asks = adapt_orders output['SellOrders']
28
+ order_book.bids = adapt_orders output['BuyOrders']
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|
36
+ Cryptoexchange::Models::Order.new(
37
+ price: order['Price'],
38
+ amount: order['Amount'],
39
+ timestamp: nil
40
+ )
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,24 @@
1
+ module Cryptoexchange::Exchanges
2
+ module SouthXchange
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::SouthXchange::Market::API_URL}/markets"
6
+
7
+ def fetch
8
+ output = super
9
+ adapt(output)
10
+ end
11
+
12
+ def adapt(output)
13
+ output.collect do |pair|
14
+ Cryptoexchange::Models::MarketPair.new(
15
+ base: pair[0],
16
+ target: pair[1],
17
+ market: SouthXchange::Market::NAME
18
+ )
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,31 @@
1
+ module Cryptoexchange::Exchanges
2
+ module SouthXchange
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::SouthXchange::Market::API_URL}/trades/#{market_pair.base}/#{market_pair.target}"
12
+ end
13
+
14
+ def adapt(output, market_pair)
15
+ output.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['Type']
20
+ tr.price = trade['Price']
21
+ tr.amount = trade['Amount']
22
+ tr.timestamp = trade['At']
23
+ tr.payload = trade
24
+ tr.market = SouthXchange::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 TrustDex
3
+ class Market
4
+ NAME = 'trust_dex'
5
+ API_URL = 'https://trustdex.io/market/api'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,55 @@
1
+ require 'bigdecimal'
2
+
3
+ module Cryptoexchange::Exchanges
4
+ module TrustDex
5
+ module Services
6
+ class Market < Cryptoexchange::Services::Market
7
+ class << self
8
+ def supports_individual_ticker_query?
9
+ false
10
+ end
11
+ end
12
+
13
+ def fetch
14
+ output = super(ticker_url)
15
+ adapt_all(output)
16
+ end
17
+
18
+ def ticker_url
19
+ "#{Cryptoexchange::Exchanges::TrustDex::Market::API_URL}/return_ticket.php"
20
+ end
21
+
22
+ def adapt_all(output)
23
+ tickers = []
24
+ output.map do |pair|
25
+ pair.each do |key, value|
26
+ target, base = key.split("_")
27
+ market_pair = Cryptoexchange::Models::MarketPair.new({
28
+ base: base,
29
+ target: target,
30
+ market: TrustDex::Market::NAME
31
+ })
32
+ tickers << adapt(value, market_pair)
33
+ end
34
+ end
35
+
36
+ tickers
37
+ end
38
+
39
+ def adapt(output, market_pair)
40
+ ticker = Cryptoexchange::Models::Ticker.new
41
+ ticker.base = market_pair.base
42
+ ticker.target = market_pair.target
43
+ ticker.market = TrustDex::Market::NAME
44
+ ticker.last = NumericHelper.to_d(output['last'])
45
+ ticker.high = NumericHelper.to_d(output['highestBid'])
46
+ ticker.low = NumericHelper.to_d(output['lowestAsk'])
47
+ ticker.volume = NumericHelper.to_d(output['quoteVolume'])
48
+ ticker.timestamp = Time.now.to_i
49
+ ticker.payload = output
50
+ ticker
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,30 @@
1
+ module Cryptoexchange::Exchanges
2
+ module TrustDex
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::TrustDex::Market::API_URL}/return_ticket.php"
6
+
7
+ def fetch
8
+ output = super
9
+ adapt(output)
10
+ end
11
+
12
+ def adapt(output)
13
+ pairs = []
14
+ output.map do |pair|
15
+ pair.each_key do |key|
16
+ target, base = key.split("_")
17
+ pairs << Cryptoexchange::Models::MarketPair.new({
18
+ base: base,
19
+ target: target,
20
+ market: TrustDex::Market::NAME
21
+ })
22
+ end
23
+ end
24
+
25
+ pairs
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,9 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Upbit
3
+ class Market
4
+ NAME = 'upbit'
5
+ API_URL = 'https://crix-api-endpoint.upbit.com/v1/crix/candles'
6
+ PAIRS_URL = 'https://s3.ap-northeast-2.amazonaws.com/crix-production/crix_master'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,51 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Upbit
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
+ ticker_output = super(ticker_url(market_pair))
13
+ volume_output = sum_volume(market_pair)
14
+ adapt(ticker_output, volume_output, market_pair)
15
+ end
16
+
17
+ def ticker_url(market_pair)
18
+ "#{Cryptoexchange::Exchanges::Upbit::Market::API_URL}/days/?code=CRIX.UPBIT.#{market_pair.target}-#{market_pair.base}"
19
+ end
20
+
21
+ def volume_url(market_pair)
22
+ "#{Cryptoexchange::Exchanges::Upbit::Market::API_URL}/minutes/10?code=CRIX.UPBIT.#{market_pair.target}-#{market_pair.base}&count=145"
23
+ end
24
+
25
+ def sum_volume(market_pair)
26
+ volume = 0
27
+ raw_output = HTTP.get(volume_url(market_pair))
28
+ output = JSON.parse(raw_output)
29
+ output.each do |ticker|
30
+ volume = volume + ticker["candleAccTradeVolume"]
31
+ end
32
+ {"volume"=>volume}
33
+ end
34
+
35
+ def adapt(ticker_output, volume_output, market_pair)
36
+ ticker = Cryptoexchange::Models::Ticker.new
37
+ ticker.base = market_pair.base
38
+ ticker.target = market_pair.target
39
+ ticker.market = Upbit::Market::NAME
40
+ ticker.last = NumericHelper.to_d(ticker_output[0]["tradePrice"])
41
+ ticker.high = NumericHelper.to_d(ticker_output[0]["highPrice"])
42
+ ticker.low = NumericHelper.to_d(ticker_output[0]["lowPrice"])
43
+ ticker.volume = NumericHelper.to_d(volume_output["volume"])
44
+ ticker.timestamp = Time.now.to_i
45
+ ticker.payload = ticker_output.push(volume_output)
46
+ ticker
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,23 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Upbit
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::Upbit::Market::PAIRS_URL}"
6
+
7
+ def fetch
8
+ raw_output = HTTP.use(:auto_inflate).headers("Accept-Encoding" => "gzip").get(PAIRS_URL)
9
+ output = JSON.parse(raw_output)
10
+ market_pairs = []
11
+ output.each do |pair|
12
+ market_pairs << Cryptoexchange::Models::MarketPair.new(
13
+ base: pair["baseCurrencyCode"],
14
+ target: pair["quoteCurrencyCode"],
15
+ market: Upbit::Market::NAME
16
+ )
17
+ end
18
+ market_pairs
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Waves
3
+ class Market
4
+ NAME = 'waves'
5
+ API_URL = 'https://marketdata.wavesplatform.com/api'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,48 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Waves
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(self.ticker_url)
13
+ adapt_all(output)
14
+ end
15
+
16
+ def ticker_url
17
+ "#{Cryptoexchange::Exchanges::Waves::Market::API_URL}/tickers"
18
+ end
19
+
20
+ def adapt_all(output)
21
+ output.map do |ticker|
22
+ base, target = ticker['symbol'].split("/")
23
+ market_pair = Cryptoexchange::Models::MarketPair.new(
24
+ base: base,
25
+ target: target,
26
+ market: Waves::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 = Waves::Market::NAME
37
+ ticker.last = NumericHelper.to_d(output['24h_close'])
38
+ ticker.high = NumericHelper.to_d(output['24h_high'])
39
+ ticker.low = NumericHelper.to_d(output['24h_low'])
40
+ ticker.volume = NumericHelper.to_d(output['24h_volume'])
41
+ ticker.timestamp = output['timestamp'] / 1000
42
+ ticker.payload = output
43
+ ticker
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end