crypto_pair/exchanges/
gate.rs1use crypto_market_type::MarketType;
2
3pub(crate) fn get_market_type(symbol: &str, is_spot: Option<bool>) -> MarketType {
4 if symbol.ends_with("_USD") {
5 if let Some(is_spot) = is_spot {
6 if is_spot { MarketType::Spot } else { MarketType::InverseSwap }
7 } else {
8 MarketType::InverseSwap
9 }
10 } else if symbol.ends_with("_USDT") {
11 if let Some(is_spot) = is_spot {
12 if is_spot { MarketType::Spot } else { MarketType::LinearSwap }
13 } else {
14 MarketType::LinearSwap
15 }
16 } else if symbol.len() > 8 && symbol[(symbol.len() - 8)..].parse::<i64>().is_ok() {
17 if symbol.contains("_USD_") {
18 MarketType::InverseFuture
19 } else if symbol.contains("_USDT_") {
20 MarketType::LinearFuture
21 } else {
22 MarketType::Unknown
23 }
24 } else if symbol.contains('_') {
25 MarketType::Spot
26 } else {
27 MarketType::Unknown
28 }
29}