cryptoexchange 0.15.6 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (25) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -0
  3. data/lib/cryptoexchange/exchanges/bitconnect/market.rb +8 -0
  4. data/lib/cryptoexchange/exchanges/bitconnect/services/market.rb +52 -0
  5. data/lib/cryptoexchange/exchanges/bitconnect/services/pairs.rb +26 -0
  6. data/lib/cryptoexchange/exchanges/cex/market.rb +8 -0
  7. data/lib/cryptoexchange/exchanges/cex/services/market.rb +40 -0
  8. data/lib/cryptoexchange/exchanges/cex/services/order_book.rb +44 -0
  9. data/lib/cryptoexchange/exchanges/cex/services/pairs.rb +25 -0
  10. data/lib/cryptoexchange/exchanges/cex/services/trades.rb +32 -0
  11. data/lib/cryptoexchange/exchanges/coins_markets/services/market.rb +2 -2
  12. data/lib/cryptoexchange/exchanges/coins_markets/services/pairs.rb +1 -1
  13. data/lib/cryptoexchange/exchanges/gate/market.rb +8 -0
  14. data/lib/cryptoexchange/exchanges/gate/services/market.rb +50 -0
  15. data/lib/cryptoexchange/exchanges/gate/services/order_book.rb +44 -0
  16. data/lib/cryptoexchange/exchanges/gate/services/pairs.rb +25 -0
  17. data/lib/cryptoexchange/exchanges/gate/services/trades.rb +32 -0
  18. data/lib/cryptoexchange/exchanges/kucoin/market.rb +8 -0
  19. data/lib/cryptoexchange/exchanges/kucoin/services/market.rb +51 -0
  20. data/lib/cryptoexchange/exchanges/kucoin/services/pairs.rb +27 -0
  21. data/lib/cryptoexchange/exchanges/stocks_exchange/market.rb +8 -0
  22. data/lib/cryptoexchange/exchanges/stocks_exchange/services/market.rb +50 -0
  23. data/lib/cryptoexchange/exchanges/stocks_exchange/services/pairs.rb +24 -0
  24. data/lib/cryptoexchange/version.rb +1 -1
  25. metadata +21 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 19a97cc3b59cd630f0397ec1801b390b8f4418f2
4
- data.tar.gz: f5752ac6bde0c9da2de4f6f8b46847d1855da74c
3
+ metadata.gz: f8b82d435378c2147816ddcb2c98b9d0bef47c94
4
+ data.tar.gz: df84b71e73d7d7b72e473c605693268541409760
5
5
  SHA512:
6
- metadata.gz: d82481cfade67a66fc7239082d1784fa39142ac884d25b089cdb10f5c1c945098a3d3f9e743645570ae2bcfb4bd5a64e9ac6115b7cfe2520d1a138e910062def
7
- data.tar.gz: d867ceee8b6b2c409f47764d585a4929e524efe8b0b4542abadeae25c841d874638a509feb070d3470f4b688e41975a98e10ead553ce7bdc6ba5c30c3f95b649
6
+ metadata.gz: a7703bf3e8ba0ff60992d66f4c1c6828f973b12125b9d67be3a540d56def33cf6edff930c46f54e576ed9ad815bf69326d4818a4c324c1eccc1df63078426f26
7
+ data.tar.gz: 28381b20e20ff35b732c05a78140633ff88513b23f82a93c64c64bc30036241b7a6e0e867ecd65fd4a3741227ca36baa9ba64394907622a9f3524308e5f7227c
data/README.md CHANGED
@@ -31,6 +31,7 @@ Or install it yourself as:
31
31
  | Binance | Y | Y | | | User-Defined|
32
32
  | Bitbay | Y | | | | User-Defined|
33
33
  | Bitcoin Indonesia | Y | | | | User-Defined|
34
+ | Bitconnect | Y | | | | Y |
34
35
  | Bitfinex | Y | | | | Y |
35
36
  | Bitflyer | Y | | | | Y |
36
37
  | Bithumb | Y | | | | Y |
@@ -45,15 +46,19 @@ Or install it yourself as:
45
46
  | BTCChina | | | | | |
46
47
  | BTER | Y | | | | Y |
47
48
  | BX Thailand | Y | | | | Y |
49
+ | Cex | Y | Y | Y | | Y |
48
50
  | CCex | Y | | | | Y |
49
51
  | CHBTC | Y | | | | User-Defined|
50
52
  | Coincheck | Y | | | | User-Defined|
51
53
  | CoinExchange | Y | | | | Y |
52
54
  | Coinmate | Y | Y | | | User-Defined|
53
55
  | Coinone | Y | | | | Y |
56
+ | CoinsMarkets | Y | | | | Y |
57
+ | COSS | Y | | | | Y |
54
58
  | Cryptopia | Y | | | | Y |
55
59
  | EtherDelta | Y | | | | Y |
56
60
  | Exmo | Y | Y | Y | | Y |
61
+ | Gate | Y | Y | Y | | Y |
57
62
  | Gatecoin | Y | | | | Y |
58
63
  | GDAX | Y | | | | Y |
59
64
  | Gemini | Y | Y | Y | | Y |
@@ -63,6 +68,7 @@ Or install it yourself as:
63
68
  | Jubi | Y | | | | Y |
64
69
  | Korbit | Y | | | | User-Defined|
65
70
  | Kraken | Y | | | | Y |
71
+ | Kucoin | Y | | | | Y |
66
72
  | LakeBTC | Y | | | | Y |
67
73
  | Liqui | Y | | | | Y |
68
74
  | LiteBit.eu | Y | | | | Y |
@@ -76,6 +82,7 @@ Or install it yourself as:
76
82
  | Qryptos | Y | | | | Y |
77
83
  | QuadrigaCX | Y | | | | User-Defined|
78
84
  | Quoine | Y | | | | Y |
85
+ | Stocks Exchange | Y | | | | Y |
79
86
  | SZZC | Y | | | | Y |
80
87
  | The Rock Trading | Y | | | | Y |
81
88
  | Tidex | Y | | | | Y |
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitconnect
3
+ class Market
4
+ NAME = 'bitconnect'
5
+ API_URL = 'https://bitconnect.co/api'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,52 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitconnect
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::Bitconnect::Market::API_URL}/info"
18
+ end
19
+
20
+ def adapt_all(output)
21
+ markets = output['markets']
22
+ markets.map do |value|
23
+ target, base = value['marketname'].split('_')
24
+ market_pair = Cryptoexchange::Models::MarketPair.new(
25
+ base: base,
26
+ target: target,
27
+ market: Bitconnect::Market::NAME
28
+ )
29
+ adapt(value, market_pair)
30
+ end
31
+ end
32
+
33
+ def adapt(output, market_pair)
34
+ ticker = Cryptoexchange::Models::Ticker.new
35
+ ticker.base = market_pair.base
36
+ ticker.target = market_pair.target
37
+ ticker.market = Bitconnect::Market::NAME
38
+ ticker.ask = NumericHelper.to_d(output['ask'])
39
+ ticker.bid = NumericHelper.to_d(output['bid'])
40
+ ticker.last = NumericHelper.to_d(output['last_price'])
41
+ ticker.high = NumericHelper.to_d(output['high24h'])
42
+ ticker.low = NumericHelper.to_d(output['low24h'])
43
+ ticker.volume = NumericHelper.to_d(output['volume24h'])
44
+ ticker.change = NumericHelper.to_d(output['change24h'])
45
+ ticker.timestamp = Time.now.to_i
46
+ ticker.payload = output
47
+ ticker
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,26 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Bitconnect
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::Bitconnect::Market::API_URL}/info"
6
+
7
+ def fetch
8
+ output = super
9
+ adapt(output)
10
+ end
11
+
12
+ def adapt(output)
13
+ markets = output['markets']
14
+ markets.map do |value|
15
+ target, base = value['marketname'].split('_')
16
+ Cryptoexchange::Models::MarketPair.new(
17
+ base: base,
18
+ target: target,
19
+ market: Bitconnect::Market::NAME
20
+ )
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Cex
3
+ class Market
4
+ NAME = 'cex'
5
+ API_URL = 'https://cex.io/api'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,40 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Cex
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::Cex::Market::API_URL}/ticker/#{market_pair.base}/#{market_pair.target}"
18
+ end
19
+
20
+ def adapt(output, market_pair)
21
+ ticker = Cryptoexchange::Models::Ticker.new
22
+ base = market_pair.base
23
+ target = market_pair.target
24
+ ticker.base = base
25
+ ticker.target = target
26
+ ticker.market = Cex::Market::NAME
27
+ ticker.ask = NumericHelper.to_d(output['ask'])
28
+ ticker.bid = NumericHelper.to_d(output['bid'])
29
+ ticker.low = NumericHelper.to_d(output['low'])
30
+ ticker.high = NumericHelper.to_d(output['high'])
31
+ ticker.last = NumericHelper.to_d(output['last'])
32
+ ticker.volume = NumericHelper.to_d(output['volume'])
33
+ ticker.timestamp = output['timestamp'].to_i
34
+ ticker.payload = output
35
+ ticker
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,44 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Cex
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::Cex::Market::API_URL}/order_book/#{market_pair.base}/#{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 = Cex::Market::NAME
26
+ order_book.asks = adapt_orders output['asks']
27
+ order_book.bids = adapt_orders output['bids']
28
+ order_book.timestamp = output['timestamp']
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: price,
37
+ amount: amount,
38
+ timestamp: nil)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,25 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Cex
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::Cex::Market::API_URL}/currency_limits"
6
+
7
+ def fetch
8
+ output = super
9
+ adapt(output)
10
+ end
11
+
12
+ def adapt(output)
13
+ pairs = output['data']['pairs']
14
+ pairs.map do |pair|
15
+ Cryptoexchange::Models::MarketPair.new(
16
+ base: pair['symbol1'],
17
+ target: pair['symbol2'],
18
+ market: Cex::Market::NAME
19
+ )
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,32 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Cex
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::Cex::Market::API_URL}/trade_history/#{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 = Cex::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
@@ -19,7 +19,7 @@ module Cryptoexchange::Exchanges
19
19
 
20
20
  def adapt_all(output)
21
21
  output.map do |key, value|
22
- base, target = key.split('_')
22
+ target, base = key.split('_')
23
23
  market_pair = Cryptoexchange::Models::MarketPair.new(
24
24
  base: base,
25
25
  target: target,
@@ -39,7 +39,7 @@ module Cryptoexchange::Exchanges
39
39
  ticker.last = NumericHelper.to_d(output['last'])
40
40
  ticker.high = NumericHelper.to_d(output['high24hr'])
41
41
  ticker.low = NumericHelper.to_d(output['low24hr'])
42
- ticker.volume = NumericHelper.to_d(output['24htrade'])
42
+ ticker.volume = NumericHelper.divide(NumericHelper.to_d(output['24htrade']), ticker.last)
43
43
  ticker.timestamp = Time.now.to_i
44
44
  ticker.payload = output
45
45
  ticker
@@ -11,7 +11,7 @@ module Cryptoexchange::Exchanges
11
11
 
12
12
  def adapt(output)
13
13
  output.map do |key, _|
14
- base, target = key.split('_')
14
+ target, base = key.split('_')
15
15
  Cryptoexchange::Models::MarketPair.new(
16
16
  base: base,
17
17
  target: target,
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Gate
3
+ class Market
4
+ NAME = 'gate'
5
+ API_URL = 'http://data.gate.io/api2/1'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,50 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Gate
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::Gate::Market::API_URL}/tickers"
18
+ end
19
+
20
+ def adapt_all(output)
21
+ output.map do |market_pair_key, ticker|
22
+ base, target = market_pair_key.split('_')
23
+ market_pair = Cryptoexchange::Models::MarketPair.new(
24
+ base: base,
25
+ target: target,
26
+ market: Gate::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 = Gate::Market::NAME
37
+ ticker.ask = NumericHelper.to_d(output['lowestAsk'])
38
+ ticker.bid = NumericHelper.to_d(output['highestBid'])
39
+ ticker.last = NumericHelper.to_d(output['last'])
40
+ ticker.high = NumericHelper.to_d(output['high24hr'])
41
+ ticker.low = NumericHelper.to_d(output['low24hr'])
42
+ ticker.volume = NumericHelper.to_d(output['quoteVolume'])
43
+ ticker.timestamp = Time.now.to_i
44
+ ticker.payload = output
45
+ ticker
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,44 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Gate
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::Gate::Market::API_URL}/orderBook/#{market_pair.base}_#{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 = Gate::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: price,
37
+ amount: amount,
38
+ timestamp: Time.now.to_i)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,25 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Gate
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::Gate::Market::API_URL}/pairs"
6
+
7
+ def fetch
8
+ output = super
9
+ adapt(output)
10
+ end
11
+
12
+ def adapt(output)
13
+ output.map do |pair|
14
+ base, target = pair.split('_')
15
+ Cryptoexchange::Models::MarketPair.new(
16
+ base: base,
17
+ target: target,
18
+ market: Gate::Market::NAME
19
+ )
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,32 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Gate
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::Gate::Market::API_URL}/tradeHistory/#{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.market = Gate::Market::NAME
20
+ tr.trade_id = trade['tradeID']
21
+ tr.type = trade['type']
22
+ tr.price = trade['rate']
23
+ tr.amount = trade['amount']
24
+ tr.timestamp = trade['timestamp'].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 Kucoin
3
+ class Market
4
+ NAME = 'kucoin'
5
+ API_URL = 'https://api.kucoin.com/v1'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,51 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Kucoin
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::Kucoin::Market::API_URL}/open/tick"
18
+ end
19
+
20
+ def adapt_all(output)
21
+ output['data'].map do |ticker|
22
+ base, target = ticker['symbol'].split('-')
23
+ market_pair = Cryptoexchange::Models::MarketPair.new(
24
+ base: base,
25
+ target: target,
26
+ market: Kucoin::Market::NAME
27
+ )
28
+ adapt(ticker, market_pair)
29
+ end
30
+ end
31
+
32
+ def adapt(output, market_pair)
33
+ market = output
34
+ ticker = Cryptoexchange::Models::Ticker.new
35
+ ticker.base = market_pair.base
36
+ ticker.target = market_pair.target
37
+ ticker.market = Kucoin::Market::NAME
38
+ ticker.ask = NumericHelper.to_d(market['sell'])
39
+ ticker.bid = NumericHelper.to_d(market['buy'])
40
+ ticker.last = NumericHelper.to_d(market['lastDealPrice'])
41
+ ticker.high = NumericHelper.to_d(market['high'])
42
+ ticker.low = NumericHelper.to_d(market['low'])
43
+ ticker.volume = NumericHelper.to_d(market['vol'])
44
+ ticker.timestamp = market['datetime'].to_i / 1000
45
+ ticker.payload = market
46
+ ticker
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,27 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Kucoin
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::Kucoin::Market::API_URL}/market/open/symbols"
6
+
7
+ def fetch
8
+ output = super
9
+ adapt(output)
10
+ end
11
+
12
+ def adapt(output)
13
+ pairs = []
14
+ output['data'].each do |data|
15
+ base, target = data['symbol'].split('-')
16
+ pairs << Cryptoexchange::Models::MarketPair.new(
17
+ base: base,
18
+ target: target,
19
+ market: Kucoin::Market::NAME
20
+ )
21
+ end
22
+ pairs
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module StocksExchange
3
+ class Market
4
+ NAME = 'stocks_exchange'
5
+ API_URL = 'https://stocks.exchange/api2'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,50 @@
1
+ module Cryptoexchange::Exchanges
2
+ module StocksExchange
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::StocksExchange::Market::API_URL}/ticker"
18
+ end
19
+
20
+ def adapt_all(output)
21
+ output.map do |pair|
22
+ base, target = pair['market_name'].split('_')
23
+ market_pair = Cryptoexchange::Models::MarketPair.new(
24
+ base: base,
25
+ target: target,
26
+ market: StocksExchange::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 = StocksExchange::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.high = NumericHelper.to_d(output['high'])
41
+ ticker.low = NumericHelper.to_d(output['low'])
42
+ ticker.volume = NumericHelper.to_d(output['vol'])
43
+ ticker.timestamp = output['updated_time']
44
+ ticker.payload = output
45
+ ticker
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,24 @@
1
+ module Cryptoexchange::Exchanges
2
+ module StocksExchange
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::StocksExchange::Market::API_URL}/markets"
6
+
7
+ def fetch
8
+ output = super
9
+ adapt(output)
10
+ end
11
+
12
+ def adapt(output)
13
+ output.map do |pair|
14
+ Cryptoexchange::Models::MarketPair.new(
15
+ base: pair['currency'],
16
+ target: pair['partner'],
17
+ market: StocksExchange::Market::NAME
18
+ )
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,3 +1,3 @@
1
1
  module Cryptoexchange
2
- VERSION = "0.15.6"
2
+ VERSION = "0.16.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cryptoexchange
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.6
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TM Lee
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-23 00:00:00.000000000 Z
11
+ date: 2017-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -187,6 +187,9 @@ files:
187
187
  - lib/cryptoexchange/exchanges/bitcoin_indonesia/market.rb
188
188
  - lib/cryptoexchange/exchanges/bitcoin_indonesia/services/market.rb
189
189
  - lib/cryptoexchange/exchanges/bitcoin_indonesia/services/pairs.rb
190
+ - lib/cryptoexchange/exchanges/bitconnect/market.rb
191
+ - lib/cryptoexchange/exchanges/bitconnect/services/market.rb
192
+ - lib/cryptoexchange/exchanges/bitconnect/services/pairs.rb
190
193
  - lib/cryptoexchange/exchanges/bitfinex/market.rb
191
194
  - lib/cryptoexchange/exchanges/bitfinex/services/market.rb
192
195
  - lib/cryptoexchange/exchanges/bitfinex/services/pairs.rb
@@ -226,6 +229,11 @@ files:
226
229
  - lib/cryptoexchange/exchanges/ccex/market.rb
227
230
  - lib/cryptoexchange/exchanges/ccex/services/market.rb
228
231
  - lib/cryptoexchange/exchanges/ccex/services/pairs.rb
232
+ - lib/cryptoexchange/exchanges/cex/market.rb
233
+ - lib/cryptoexchange/exchanges/cex/services/market.rb
234
+ - lib/cryptoexchange/exchanges/cex/services/order_book.rb
235
+ - lib/cryptoexchange/exchanges/cex/services/pairs.rb
236
+ - lib/cryptoexchange/exchanges/cex/services/trades.rb
229
237
  - lib/cryptoexchange/exchanges/chbtc/chbtc.yml
230
238
  - lib/cryptoexchange/exchanges/chbtc/market.rb
231
239
  - lib/cryptoexchange/exchanges/chbtc/services/market.rb
@@ -262,6 +270,11 @@ files:
262
270
  - lib/cryptoexchange/exchanges/exmo/services/order_book.rb
263
271
  - lib/cryptoexchange/exchanges/exmo/services/pairs.rb
264
272
  - lib/cryptoexchange/exchanges/exmo/services/trades.rb
273
+ - lib/cryptoexchange/exchanges/gate/market.rb
274
+ - lib/cryptoexchange/exchanges/gate/services/market.rb
275
+ - lib/cryptoexchange/exchanges/gate/services/order_book.rb
276
+ - lib/cryptoexchange/exchanges/gate/services/pairs.rb
277
+ - lib/cryptoexchange/exchanges/gate/services/trades.rb
265
278
  - lib/cryptoexchange/exchanges/gatecoin/market.rb
266
279
  - lib/cryptoexchange/exchanges/gatecoin/services/market.rb
267
280
  - lib/cryptoexchange/exchanges/gatecoin/services/pairs.rb
@@ -293,6 +306,9 @@ files:
293
306
  - lib/cryptoexchange/exchanges/kraken/market.rb
294
307
  - lib/cryptoexchange/exchanges/kraken/services/market.rb
295
308
  - lib/cryptoexchange/exchanges/kraken/services/pairs.rb
309
+ - lib/cryptoexchange/exchanges/kucoin/market.rb
310
+ - lib/cryptoexchange/exchanges/kucoin/services/market.rb
311
+ - lib/cryptoexchange/exchanges/kucoin/services/pairs.rb
296
312
  - lib/cryptoexchange/exchanges/lakebtc/market.rb
297
313
  - lib/cryptoexchange/exchanges/lakebtc/services/market.rb
298
314
  - lib/cryptoexchange/exchanges/lakebtc/services/pairs.rb
@@ -335,6 +351,9 @@ files:
335
351
  - lib/cryptoexchange/exchanges/quoine/market.rb
336
352
  - lib/cryptoexchange/exchanges/quoine/services/market.rb
337
353
  - lib/cryptoexchange/exchanges/quoine/services/pairs.rb
354
+ - lib/cryptoexchange/exchanges/stocks_exchange/market.rb
355
+ - lib/cryptoexchange/exchanges/stocks_exchange/services/market.rb
356
+ - lib/cryptoexchange/exchanges/stocks_exchange/services/pairs.rb
338
357
  - lib/cryptoexchange/exchanges/szzc/market.rb
339
358
  - lib/cryptoexchange/exchanges/szzc/services/market.rb
340
359
  - lib/cryptoexchange/exchanges/szzc/services/pairs.rb