1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
mod error;
mod exchanges;
pub use error::Error;
pub use exchanges::binance::binance_future::BinanceFutureRestClient;
pub use exchanges::binance::binance_inverse_swap::BinanceInverseSwapRestClient;
pub use exchanges::binance::binance_linear_swap::BinanceLinearSwapRestClient;
pub use exchanges::binance::binance_option::BinanceOptionRestClient;
pub use exchanges::binance::binance_spot::BinanceSpotRestClient;
pub use exchanges::bitfinex::BitfinexRestClient;
pub use exchanges::bitget::*;
pub use exchanges::bithumb::*;
pub use exchanges::bitmex::BitmexRestClient;
pub use exchanges::bitstamp::BitstampRestClient;
pub use exchanges::bitz::*;
pub use exchanges::bybit::BybitRestClient;
pub use exchanges::coinbase_pro::CoinbaseProRestClient;
pub use exchanges::deribit::DeribitRestClient;
pub use exchanges::ftx::FtxRestClient;
pub use exchanges::gate::*;
pub use exchanges::huobi::huobi_future::HuobiFutureRestClient;
pub use exchanges::huobi::huobi_inverse_swap::HuobiInverseSwapRestClient;
pub use exchanges::huobi::huobi_linear_swap::HuobiLinearSwapRestClient;
pub use exchanges::huobi::huobi_option::HuobiOptionRestClient;
pub use exchanges::huobi::huobi_spot::HuobiSpotRestClient;
pub use exchanges::kraken::KrakenRestClient;
pub use exchanges::kucoin::*;
pub use exchanges::mxc::mxc_spot::MxcSpotRestClient;
pub use exchanges::mxc::mxc_swap::MxcSwapRestClient;
pub use exchanges::okex::OkexRestClient;
pub use exchanges::zbg::*;
use crypto_markets::MarketType;
use error::Result;
pub fn fetch_l2_snapshot(exchange: &str, market_type: MarketType, symbol: &str) -> Result<String> {
match exchange {
"binance" => exchanges::binance::fetch_l2_snapshot(market_type, symbol),
"bitfinex" => exchanges::bitfinex::BitfinexRestClient::fetch_l2_snapshot(symbol),
"bitget" => exchanges::bitget::fetch_l2_snapshot(market_type, symbol),
"bithumb" => exchanges::bithumb::BithumbRestClient::fetch_l2_snapshot(symbol),
"bitmex" => exchanges::bitmex::BitmexRestClient::fetch_l2_snapshot(symbol),
"bitstamp" => exchanges::bitstamp::BitstampRestClient::fetch_l2_snapshot(symbol),
"bitz" => exchanges::bitz::fetch_l2_snapshot(market_type, symbol),
"bybit" => exchanges::bybit::BybitRestClient::fetch_l2_snapshot(symbol),
"coinbase_pro" => exchanges::coinbase_pro::CoinbaseProRestClient::fetch_l2_snapshot(symbol),
"deribit" => exchanges::deribit::DeribitRestClient::fetch_l2_snapshot(symbol),
"ftx" => exchanges::ftx::FtxRestClient::fetch_l2_snapshot(symbol),
"gate" => exchanges::gate::fetch_l2_snapshot(market_type, symbol),
"huobi" => exchanges::huobi::fetch_l2_snapshot(market_type, symbol),
"kraken" => exchanges::kraken::KrakenRestClient::fetch_l2_snapshot(symbol),
"kucoin" => exchanges::kucoin::fetch_l2_snapshot(market_type, symbol),
"mxc" => exchanges::mxc::fetch_l2_snapshot(market_type, symbol),
"okex" => exchanges::okex::OkexRestClient::fetch_l2_snapshot(symbol),
"zbg" => exchanges::zbg::fetch_l2_snapshot(market_type, symbol),
_ => panic!("Unknown exchange {}", exchange),
}
}
pub fn fetch_l3_snapshot(exchange: &str, market_type: MarketType, symbol: &str) -> Result<String> {
match exchange {
"bitfinex" => exchanges::bitfinex::BitfinexRestClient::fetch_l3_snapshot(symbol),
"bitstamp" => exchanges::bitstamp::BitstampRestClient::fetch_l3_snapshot(symbol),
"coinbase_pro" => exchanges::coinbase_pro::CoinbaseProRestClient::fetch_l3_snapshot(symbol),
"kucoin" => exchanges::kucoin::fetch_l3_snapshot(market_type, symbol),
_ => panic!(
"{} {} does NOT provide level3 orderbook data",
exchange, market_type
),
}
}