cryptoexchange 0.19.0 → 0.20.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.
- checksums.yaml +4 -4
- data/README.md +8 -2
- data/lib/cryptoexchange/client.rb +15 -35
- data/lib/cryptoexchange/error.rb +3 -0
- data/lib/cryptoexchange/exchanges/acx/services/market.rb +2 -2
- data/lib/cryptoexchange/exchanges/bibox/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/bibox/services/market.rb +42 -0
- data/lib/cryptoexchange/exchanges/bibox/services/order_book.rb +47 -0
- data/lib/cryptoexchange/exchanges/bibox/services/pairs.rb +24 -0
- data/lib/cryptoexchange/exchanges/bibox/services/trades.rb +34 -0
- data/lib/cryptoexchange/exchanges/cobinhood/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/cobinhood/services/market.rb +41 -0
- data/lib/cryptoexchange/exchanges/cobinhood/services/order_book.rb +44 -0
- data/lib/cryptoexchange/exchanges/cobinhood/services/pairs.rb +24 -0
- data/lib/cryptoexchange/exchanges/coinnest/coinnest.yml +47 -0
- data/lib/cryptoexchange/exchanges/coinnest/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/coinnest/services/market.rb +39 -0
- data/lib/cryptoexchange/exchanges/coinnest/services/order_book.rb +45 -0
- data/lib/cryptoexchange/exchanges/coinnest/services/pairs.rb +23 -0
- data/lib/cryptoexchange/exchanges/coinnest/services/trades.rb +32 -0
- data/lib/cryptoexchange/exchanges/cryptopia/services/order_book.rb +47 -0
- data/lib/cryptoexchange/exchanges/cryptopia/services/trades.rb +34 -0
- data/lib/cryptoexchange/exchanges/hksy/hksy.yml +69 -0
- data/lib/cryptoexchange/exchanges/hksy/market.rb +9 -0
- data/lib/cryptoexchange/exchanges/hksy/services/market.rb +42 -0
- data/lib/cryptoexchange/exchanges/hksy/services/pairs.rb +21 -0
- data/lib/cryptoexchange/exchanges/hksy/services/trades.rb +34 -0
- data/lib/cryptoexchange/exchanges/k_kex/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/k_kex/services/market.rb +41 -0
- data/lib/cryptoexchange/exchanges/k_kex/services/order_book.rb +45 -0
- data/lib/cryptoexchange/exchanges/k_kex/services/pairs.rb +24 -0
- data/lib/cryptoexchange/exchanges/k_kex/services/trades.rb +32 -0
- data/lib/cryptoexchange/exchanges/trade_satoshi/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/trade_satoshi/services/market.rb +65 -0
- data/lib/cryptoexchange/exchanges/trade_satoshi/services/pairs.rb +27 -0
- data/lib/cryptoexchange/services/market.rb +16 -2
- data/lib/cryptoexchange/services/pairs.rb +16 -2
- data/lib/cryptoexchange/version.rb +1 -1
- metadata +32 -2
@@ -0,0 +1,47 @@
|
|
1
|
+
module Cryptoexchange::Exchanges
|
2
|
+
module Cryptopia
|
3
|
+
module Services
|
4
|
+
class OrderBook < Cryptoexchange::Services::Market
|
5
|
+
MAXIMUM_DEPTH = 100000
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def supports_individual_ticker_query?
|
9
|
+
true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def fetch(market_pair)
|
14
|
+
output = super(ticker_url(market_pair))
|
15
|
+
adapt(output, market_pair)
|
16
|
+
end
|
17
|
+
|
18
|
+
def ticker_url(market_pair)
|
19
|
+
"#{Cryptoexchange::Exchanges::Cryptopia::Market::API_URL}/GetMarketOrders/#{market_pair.base}_#{market_pair.target}/#{MAXIMUM_DEPTH}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def adapt(output, market_pair)
|
23
|
+
order_book = Cryptoexchange::Models::OrderBook.new
|
24
|
+
|
25
|
+
order_book.base = market_pair.base
|
26
|
+
order_book.target = market_pair.target
|
27
|
+
order_book.market = Cryptopia::Market::NAME
|
28
|
+
order_book.asks = adapt_orders output['Data']['Sell']
|
29
|
+
order_book.bids = adapt_orders output['Data']['Buy']
|
30
|
+
order_book.timestamp = Time.now.to_i
|
31
|
+
order_book.payload = output
|
32
|
+
order_book
|
33
|
+
end
|
34
|
+
|
35
|
+
def adapt_orders(orders)
|
36
|
+
orders.collect do |order_entry|
|
37
|
+
Cryptoexchange::Models::Order.new(
|
38
|
+
price: order_entry['Price'],
|
39
|
+
amount: order_entry['Volume'],
|
40
|
+
timestamp: nil
|
41
|
+
)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Cryptoexchange::Exchanges
|
2
|
+
module Cryptopia
|
3
|
+
module Services
|
4
|
+
class Trades < Cryptoexchange::Services::Market
|
5
|
+
HOURS = 24
|
6
|
+
|
7
|
+
def fetch(market_pair)
|
8
|
+
output = super(ticker_url(market_pair))
|
9
|
+
adapt(output, market_pair)
|
10
|
+
end
|
11
|
+
|
12
|
+
def ticker_url(market_pair)
|
13
|
+
"#{Cryptoexchange::Exchanges::Cryptopia::Market::API_URL}/GetMarketHistory/#{market_pair.base}_#{market_pair.target}/#{HOURS}"
|
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 = nil
|
20
|
+
tr.base = market_pair.base
|
21
|
+
tr.target = market_pair.target
|
22
|
+
tr.market = Cryptopia::Market::NAME
|
23
|
+
tr.type = trade['Type'].to_s.downcase
|
24
|
+
tr.price = trade['Price']
|
25
|
+
tr.amount = trade['Amount']
|
26
|
+
tr.timestamp = trade['Timestamp'].to_i
|
27
|
+
tr.payload = trade
|
28
|
+
tr
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
:pairs:
|
2
|
+
- :base: USDT
|
3
|
+
:target: HKD
|
4
|
+
- :base: ETH
|
5
|
+
:target: HKD
|
6
|
+
- :base: ETF
|
7
|
+
:target: HKD
|
8
|
+
- :base: BTC
|
9
|
+
:target: HKD
|
10
|
+
- :base: LTC
|
11
|
+
:target: HKD
|
12
|
+
- :base: LRC
|
13
|
+
:target: HKD
|
14
|
+
- :base: BCH
|
15
|
+
:target: HKD
|
16
|
+
- :base: UBTC
|
17
|
+
:target: HKD
|
18
|
+
- :base: QTUM
|
19
|
+
:target: HKD
|
20
|
+
- :base: TCC
|
21
|
+
:target: HKD
|
22
|
+
- :base: NCC
|
23
|
+
:target: HKD
|
24
|
+
- :base: NEO
|
25
|
+
:target: HKD
|
26
|
+
- :base: NEOGAS
|
27
|
+
:target: HKD
|
28
|
+
- :base: TV
|
29
|
+
:target: HKD
|
30
|
+
- :base: ICHC
|
31
|
+
:target: HKD
|
32
|
+
- :base: IPT
|
33
|
+
:target: HKD
|
34
|
+
- :base: HSR
|
35
|
+
:target: HKD
|
36
|
+
- :base: GEC
|
37
|
+
:target: HKD
|
38
|
+
- :base: STX
|
39
|
+
:target: HKD
|
40
|
+
- :base: TSL
|
41
|
+
:target: HKD
|
42
|
+
- :base: STC
|
43
|
+
:target: HKD
|
44
|
+
- :base: QBT
|
45
|
+
:target: HKD
|
46
|
+
- :base: ITS
|
47
|
+
:target: HKD
|
48
|
+
- :base: PBC
|
49
|
+
:target: HKD
|
50
|
+
- :base: HGT
|
51
|
+
:target: HKD
|
52
|
+
- :base: ACTC
|
53
|
+
:target: HKD
|
54
|
+
- :base: INK
|
55
|
+
:target: HKD
|
56
|
+
- :base: JRC
|
57
|
+
:target: HKD
|
58
|
+
- :base: EPS
|
59
|
+
:target: HKD
|
60
|
+
- :base: LKH
|
61
|
+
:target: HKD
|
62
|
+
- :base: CTC
|
63
|
+
:target: HKD
|
64
|
+
- :base: WDC
|
65
|
+
:target: HKD
|
66
|
+
- :base: TKC
|
67
|
+
:target: HKD
|
68
|
+
- :base: ZSC
|
69
|
+
:target: HKD
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Cryptoexchange::Exchanges
|
2
|
+
module Hksy
|
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
|
+
base = market_pair.base
|
18
|
+
target = market_pair.target
|
19
|
+
"#{Cryptoexchange::Exchanges::Hksy::Market::MARKET_API_URL}/selectCoinMarketbyCoinName?coinName=#{base}&payCoinName=#{target}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def adapt(output, market_pair)
|
23
|
+
market = output["model"]
|
24
|
+
|
25
|
+
ticker = Cryptoexchange::Models::Ticker.new
|
26
|
+
ticker.base = market_pair.base
|
27
|
+
ticker.target = market_pair.target
|
28
|
+
ticker.market = Hksy::Market::NAME
|
29
|
+
ticker.ask = NumericHelper.to_d(market['sellprice'])
|
30
|
+
ticker.bid = NumericHelper.to_d(market['buyprice'])
|
31
|
+
ticker.last = NumericHelper.to_d(market['newclinchprice'])
|
32
|
+
ticker.high = NumericHelper.to_d(market['highprice'])
|
33
|
+
ticker.low = NumericHelper.to_d(market['lowprice'])
|
34
|
+
ticker.volume = NumericHelper.to_d(market['count24'])
|
35
|
+
ticker.timestamp = Time.now.to_i
|
36
|
+
ticker.payload = market
|
37
|
+
ticker
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Cryptoexchange::Exchanges
|
2
|
+
module Hksy
|
3
|
+
module Services
|
4
|
+
class Pairs < Cryptoexchange::Services::Pairs
|
5
|
+
def fetch
|
6
|
+
adapt(super)
|
7
|
+
end
|
8
|
+
|
9
|
+
def adapt(output)
|
10
|
+
output.map do |pair|
|
11
|
+
Cryptoexchange::Models::MarketPair.new(
|
12
|
+
base: pair[:base],
|
13
|
+
target: pair[:target],
|
14
|
+
market: Hksy::Market::NAME
|
15
|
+
)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Cryptoexchange::Exchanges
|
2
|
+
module Hksy
|
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::Hksy::Market::TRADE_API_URL}/selectClinchInfoByCoinName?coinName=#{base}&payCoinName=#{target}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def adapt(output, market_pair)
|
17
|
+
data = output["model"]
|
18
|
+
data.collect do |trade|
|
19
|
+
tr = Cryptoexchange::Models::Trade.new
|
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['createtime'].to_i
|
26
|
+
tr.payload = trade
|
27
|
+
tr.market = Hksy::Market::NAME
|
28
|
+
tr
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Cryptoexchange::Exchanges
|
2
|
+
module KKex
|
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::KKex::Market::API_URL}/ticker?symbol=#{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
|
+
|
25
|
+
ticker.base = base
|
26
|
+
ticker.target = target
|
27
|
+
ticker.market = KKex::Market::NAME
|
28
|
+
ticker.ask = NumericHelper.to_d(output['ticker']['sell'])
|
29
|
+
ticker.bid = NumericHelper.to_d(output['ticker']['buy'])
|
30
|
+
ticker.last = NumericHelper.to_d(output['ticker']['last'])
|
31
|
+
ticker.low = NumericHelper.to_d(output['ticker']['low'])
|
32
|
+
ticker.volume = NumericHelper.to_d(output['ticker']['vol'])
|
33
|
+
ticker.high = NumericHelper.to_d(output['ticker']['high'])
|
34
|
+
ticker.timestamp = DateTime.now.to_time.to_i
|
35
|
+
ticker.payload = output
|
36
|
+
ticker
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Cryptoexchange::Exchanges
|
2
|
+
module KKex
|
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::KKex::Market::API_URL}/depth?symbol=#{market_pair.base}#{market_pair.target}&size=20"
|
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 = KKex::Market::NAME
|
27
|
+
order_book.asks = adapt_orders output['asks']
|
28
|
+
order_book.bids = adapt_orders output['bids']
|
29
|
+
order_book.timestamp = timestamp
|
30
|
+
order_book.payload = output
|
31
|
+
order_book
|
32
|
+
end
|
33
|
+
|
34
|
+
def adapt_orders(orders)
|
35
|
+
orders.collect do |order_entry|
|
36
|
+
price, amount = order_entry
|
37
|
+
Cryptoexchange::Models::Order.new(price: price,
|
38
|
+
amount: amount,
|
39
|
+
timestamp: nil)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Cryptoexchange::Exchanges
|
2
|
+
module KKex
|
3
|
+
module Services
|
4
|
+
class Pairs < Cryptoexchange::Services::Pairs
|
5
|
+
PAIRS_URL = "#{Cryptoexchange::Exchanges::KKex::Market::API_URL}/products"
|
6
|
+
|
7
|
+
def fetch
|
8
|
+
output = super
|
9
|
+
adapt(output)
|
10
|
+
end
|
11
|
+
|
12
|
+
def adapt(output)
|
13
|
+
output["products"].map do |pair|
|
14
|
+
Cryptoexchange::Models::MarketPair.new(
|
15
|
+
base: pair['mark_asset'],
|
16
|
+
target: pair['base_asset'],
|
17
|
+
market: KKex::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 KKex
|
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::KKex::Market::API_URL}/trades?symbol=#{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.type = trade['type']
|
21
|
+
tr.price = trade['price']
|
22
|
+
tr.amount = trade['amount']
|
23
|
+
tr.timestamp = trade['date'].to_i
|
24
|
+
tr.payload = trade
|
25
|
+
tr.market = KKex::Market::NAME
|
26
|
+
tr
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Cryptoexchange::Exchanges
|
2
|
+
module TradeSatoshi
|
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::TradeSatoshi::Market::API_URL}/getmarketsummaries"
|
18
|
+
end
|
19
|
+
|
20
|
+
def adapt_all(output)
|
21
|
+
output['result'].map do |ticker|
|
22
|
+
base, target = ticker['market'].split('_')
|
23
|
+
market_pair = Cryptoexchange::Models::MarketPair.new(
|
24
|
+
base: base,
|
25
|
+
target: target,
|
26
|
+
market: TradeSatoshi::Market::NAME
|
27
|
+
)
|
28
|
+
adapt(ticker, market_pair)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# {
|
33
|
+
# "market":"LTC_BTC",
|
34
|
+
# "high":0.01749999,
|
35
|
+
# "low":0.01520006,
|
36
|
+
# "volume":469.05469918,
|
37
|
+
# "baseVolume":7.71450537,
|
38
|
+
# "last":0.01680000,
|
39
|
+
# "bid":0.01680000,
|
40
|
+
# "ask":0.01699999,
|
41
|
+
# "openBuyOrders":59,
|
42
|
+
# "openSellOrders":70,
|
43
|
+
# "change":0.0
|
44
|
+
# }
|
45
|
+
def adapt(output, market_pair)
|
46
|
+
market = output
|
47
|
+
# raise output.inspect
|
48
|
+
ticker = Cryptoexchange::Models::Ticker.new
|
49
|
+
ticker.base = market_pair.base
|
50
|
+
ticker.target = market_pair.target
|
51
|
+
ticker.market = TradeSatoshi::Market::NAME
|
52
|
+
ticker.ask = NumericHelper.to_d(market['ask'])
|
53
|
+
ticker.bid = NumericHelper.to_d(market['bid'])
|
54
|
+
ticker.last = NumericHelper.to_d(market['last'])
|
55
|
+
ticker.high = NumericHelper.to_d(market['high'])
|
56
|
+
ticker.low = NumericHelper.to_d(market['low'])
|
57
|
+
ticker.volume = NumericHelper.to_d(market['volume'])
|
58
|
+
ticker.timestamp = DateTime.now.to_time.to_i
|
59
|
+
ticker.payload = market
|
60
|
+
ticker
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Cryptoexchange::Exchanges
|
2
|
+
module TradeSatoshi
|
3
|
+
module Services
|
4
|
+
class Pairs < Cryptoexchange::Services::Pairs
|
5
|
+
PAIRS_URL = "#{Cryptoexchange::Exchanges::TradeSatoshi::Market::API_URL}/getmarketsummaries"
|
6
|
+
|
7
|
+
def fetch
|
8
|
+
output = super
|
9
|
+
adapt(output)
|
10
|
+
end
|
11
|
+
|
12
|
+
def adapt(output)
|
13
|
+
pairs = []
|
14
|
+
output['result'].each do |data|
|
15
|
+
base, target = data['market'].split('_')
|
16
|
+
pairs << Cryptoexchange::Models::MarketPair.new(
|
17
|
+
base: base,
|
18
|
+
target: target,
|
19
|
+
market: TradeSatoshi::Market::NAME
|
20
|
+
)
|
21
|
+
end
|
22
|
+
pairs
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -9,8 +9,22 @@ module Cryptoexchange
|
|
9
9
|
|
10
10
|
def fetch(endpoint)
|
11
11
|
LruTtlCache.ticker_cache.getset(endpoint) do
|
12
|
-
|
13
|
-
|
12
|
+
begin
|
13
|
+
response = http_get(endpoint)
|
14
|
+
if response.code == 200
|
15
|
+
response.parse :json
|
16
|
+
else
|
17
|
+
raise Cryptoexchange::HttpResponseError, { response: response }
|
18
|
+
end
|
19
|
+
rescue HTTP::ConnectionError => e
|
20
|
+
raise Cryptoexchange::HttpConnectionError, { error: e, response: response }
|
21
|
+
rescue HTTP::TimeoutError => e
|
22
|
+
raise Cryptoexchange::HttpTimeoutError, { error: e, response: response }
|
23
|
+
rescue JSON::ParserError => e
|
24
|
+
raise Cryptoexchange::JsonParseError, { error: e, response: response }
|
25
|
+
rescue TypeError => e
|
26
|
+
raise Cryptoexchange::TypeFormatError, { error: e, response: response }
|
27
|
+
end
|
14
28
|
end
|
15
29
|
end
|
16
30
|
|
@@ -18,8 +18,22 @@ module Cryptoexchange
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def fetch_via_api(endpoint = self.class::PAIRS_URL)
|
21
|
-
|
22
|
-
|
21
|
+
begin
|
22
|
+
fetch_response = HTTP.timeout(:write => 2, :connect => 5, :read => 8).get(endpoint)
|
23
|
+
if fetch_response.code == 200
|
24
|
+
fetch_response.parse :json
|
25
|
+
else
|
26
|
+
raise Cryptoexchange::HttpResponseError, { response: fetch_response }
|
27
|
+
end
|
28
|
+
rescue HTTP::ConnectionError => e
|
29
|
+
raise Cryptoexchange::HttpConnectionError, { error: e, response: fetch_response }
|
30
|
+
rescue HTTP::TimeoutError => e
|
31
|
+
raise Cryptoexchange::HttpTimeoutError, { error: e, response: fetch_response }
|
32
|
+
rescue JSON::ParserError => e
|
33
|
+
raise Cryptoexchange::JsonParseError, { error: e, response: fetch_response }
|
34
|
+
rescue TypeError => e
|
35
|
+
raise Cryptoexchange::TypeFormatError, { error: e, response: fetch_response }
|
36
|
+
end
|
23
37
|
end
|
24
38
|
|
25
39
|
def fetch_via_override(path)
|
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.
|
4
|
+
version: 0.20.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: 2018-01-
|
11
|
+
date: 2018-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -178,6 +178,11 @@ files:
|
|
178
178
|
- lib/cryptoexchange/exchanges/anx/market.rb
|
179
179
|
- lib/cryptoexchange/exchanges/anx/services/market.rb
|
180
180
|
- lib/cryptoexchange/exchanges/anx/services/pairs.rb
|
181
|
+
- lib/cryptoexchange/exchanges/bibox/market.rb
|
182
|
+
- lib/cryptoexchange/exchanges/bibox/services/market.rb
|
183
|
+
- lib/cryptoexchange/exchanges/bibox/services/order_book.rb
|
184
|
+
- lib/cryptoexchange/exchanges/bibox/services/pairs.rb
|
185
|
+
- lib/cryptoexchange/exchanges/bibox/services/trades.rb
|
181
186
|
- lib/cryptoexchange/exchanges/binance/market.rb
|
182
187
|
- lib/cryptoexchange/exchanges/binance/services/market.rb
|
183
188
|
- lib/cryptoexchange/exchanges/binance/services/order_book.rb
|
@@ -246,6 +251,10 @@ files:
|
|
246
251
|
- lib/cryptoexchange/exchanges/chbtc/market.rb
|
247
252
|
- lib/cryptoexchange/exchanges/chbtc/services/market.rb
|
248
253
|
- lib/cryptoexchange/exchanges/chbtc/services/pairs.rb
|
254
|
+
- lib/cryptoexchange/exchanges/cobinhood/market.rb
|
255
|
+
- lib/cryptoexchange/exchanges/cobinhood/services/market.rb
|
256
|
+
- lib/cryptoexchange/exchanges/cobinhood/services/order_book.rb
|
257
|
+
- lib/cryptoexchange/exchanges/cobinhood/services/pairs.rb
|
249
258
|
- lib/cryptoexchange/exchanges/coin_exchange/market.rb
|
250
259
|
- lib/cryptoexchange/exchanges/coin_exchange/services/market.rb
|
251
260
|
- lib/cryptoexchange/exchanges/coin_exchange/services/pairs.rb
|
@@ -258,6 +267,12 @@ files:
|
|
258
267
|
- lib/cryptoexchange/exchanges/coinmate/services/market.rb
|
259
268
|
- lib/cryptoexchange/exchanges/coinmate/services/order_book.rb
|
260
269
|
- lib/cryptoexchange/exchanges/coinmate/services/pairs.rb
|
270
|
+
- lib/cryptoexchange/exchanges/coinnest/coinnest.yml
|
271
|
+
- lib/cryptoexchange/exchanges/coinnest/market.rb
|
272
|
+
- lib/cryptoexchange/exchanges/coinnest/services/market.rb
|
273
|
+
- lib/cryptoexchange/exchanges/coinnest/services/order_book.rb
|
274
|
+
- lib/cryptoexchange/exchanges/coinnest/services/pairs.rb
|
275
|
+
- lib/cryptoexchange/exchanges/coinnest/services/trades.rb
|
261
276
|
- lib/cryptoexchange/exchanges/coinone/market.rb
|
262
277
|
- lib/cryptoexchange/exchanges/coinone/services/market.rb
|
263
278
|
- lib/cryptoexchange/exchanges/coinone/services/pairs.rb
|
@@ -272,7 +287,9 @@ files:
|
|
272
287
|
- lib/cryptoexchange/exchanges/crypto_bridge/services/pairs.rb
|
273
288
|
- lib/cryptoexchange/exchanges/cryptopia/market.rb
|
274
289
|
- lib/cryptoexchange/exchanges/cryptopia/services/market.rb
|
290
|
+
- lib/cryptoexchange/exchanges/cryptopia/services/order_book.rb
|
275
291
|
- lib/cryptoexchange/exchanges/cryptopia/services/pairs.rb
|
292
|
+
- lib/cryptoexchange/exchanges/cryptopia/services/trades.rb
|
276
293
|
- lib/cryptoexchange/exchanges/ether_delta/market.rb
|
277
294
|
- lib/cryptoexchange/exchanges/ether_delta/services/market.rb
|
278
295
|
- lib/cryptoexchange/exchanges/ether_delta/services/pairs.rb
|
@@ -300,6 +317,11 @@ files:
|
|
300
317
|
- lib/cryptoexchange/exchanges/hitbtc/market.rb
|
301
318
|
- lib/cryptoexchange/exchanges/hitbtc/services/market.rb
|
302
319
|
- lib/cryptoexchange/exchanges/hitbtc/services/pairs.rb
|
320
|
+
- lib/cryptoexchange/exchanges/hksy/hksy.yml
|
321
|
+
- lib/cryptoexchange/exchanges/hksy/market.rb
|
322
|
+
- lib/cryptoexchange/exchanges/hksy/services/market.rb
|
323
|
+
- lib/cryptoexchange/exchanges/hksy/services/pairs.rb
|
324
|
+
- lib/cryptoexchange/exchanges/hksy/services/trades.rb
|
303
325
|
- lib/cryptoexchange/exchanges/huobi/market.rb
|
304
326
|
- lib/cryptoexchange/exchanges/huobi/services/market.rb
|
305
327
|
- lib/cryptoexchange/exchanges/huobi/services/pairs.rb
|
@@ -310,6 +332,11 @@ files:
|
|
310
332
|
- lib/cryptoexchange/exchanges/jubi/market.rb
|
311
333
|
- lib/cryptoexchange/exchanges/jubi/services/market.rb
|
312
334
|
- lib/cryptoexchange/exchanges/jubi/services/pairs.rb
|
335
|
+
- lib/cryptoexchange/exchanges/k_kex/market.rb
|
336
|
+
- lib/cryptoexchange/exchanges/k_kex/services/market.rb
|
337
|
+
- lib/cryptoexchange/exchanges/k_kex/services/order_book.rb
|
338
|
+
- lib/cryptoexchange/exchanges/k_kex/services/pairs.rb
|
339
|
+
- lib/cryptoexchange/exchanges/k_kex/services/trades.rb
|
313
340
|
- lib/cryptoexchange/exchanges/korbit/korbit.yml
|
314
341
|
- lib/cryptoexchange/exchanges/korbit/market.rb
|
315
342
|
- lib/cryptoexchange/exchanges/korbit/services/market.rb
|
@@ -390,6 +417,9 @@ files:
|
|
390
417
|
- lib/cryptoexchange/exchanges/tidex/market.rb
|
391
418
|
- lib/cryptoexchange/exchanges/tidex/services/market.rb
|
392
419
|
- lib/cryptoexchange/exchanges/tidex/services/pairs.rb
|
420
|
+
- lib/cryptoexchange/exchanges/trade_satoshi/market.rb
|
421
|
+
- lib/cryptoexchange/exchanges/trade_satoshi/services/market.rb
|
422
|
+
- lib/cryptoexchange/exchanges/trade_satoshi/services/pairs.rb
|
393
423
|
- lib/cryptoexchange/exchanges/tux_exchange/market.rb
|
394
424
|
- lib/cryptoexchange/exchanges/tux_exchange/services/market.rb
|
395
425
|
- lib/cryptoexchange/exchanges/tux_exchange/services/pairs.rb
|