crypto_pair/exchanges/
gate.rs

1use 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}