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
mod exchanges;
mod msg;
pub use msg::*;
pub use crypto_market_type::MarketType;
use serde_json::Result;
pub fn parse_trade(exchange: &str, market_type: MarketType, msg: &str) -> Result<Vec<TradeMsg>> {
match exchange {
"binance" => exchanges::binance::parse_trade(market_type, msg),
"bitfinex" => exchanges::bitfinex::parse_trade(market_type, msg),
"bitget" => exchanges::bitget::parse_trade(market_type, msg),
"bithumb" => exchanges::bithumb::parse_trade(market_type, msg),
"bitmex" => exchanges::bitmex::parse_trade(market_type, msg),
"bitstamp" => exchanges::bitstamp::parse_trade(market_type, msg),
"bitz" => exchanges::bitz::parse_trade(market_type, msg),
"bybit" => exchanges::bybit::parse_trade(market_type, msg),
"coinbase_pro" => exchanges::coinbase_pro::parse_trade(market_type, msg),
"deribit" => exchanges::deribit::parse_trade(market_type, msg),
"ftx" => exchanges::ftx::parse_trade(market_type, msg),
"gate" => exchanges::gate::parse_trade(market_type, msg),
"huobi" => exchanges::huobi::parse_trade(market_type, msg),
"kraken" => exchanges::kraken::parse_trade(market_type, msg),
"kucoin" => exchanges::kucoin::parse_trade(market_type, msg),
"mxc" => exchanges::mxc::parse_trade(market_type, msg),
"okex" => exchanges::okex::parse_trade(market_type, msg),
"zbg" => exchanges::zbg::parse_trade(market_type, msg),
_ => panic!("Unknown exchange {}", exchange),
}
}
pub fn parse_funding_rate(
exchange: &str,
market_type: MarketType,
msg: &str,
) -> Result<Vec<FundingRateMsg>> {
let func = match exchange {
"binance" => exchanges::binance::parse_funding_rate,
"bitget" => exchanges::bitget::parse_funding_rate,
"bitmex" => exchanges::bitmex::parse_funding_rate,
"huobi" => exchanges::huobi::parse_funding_rate,
"okex" => exchanges::okex::parse_funding_rate,
_ => panic!("{} does NOT have perpetual swap market", exchange),
};
func(market_type, msg)
}