crypto-crawler 4.7.4

A rock-solid cryprocurrency crawler.
Documentation
use std::sync::mpsc::Sender;

use crate::{crawlers::utils::crawl_event, msg::Message};
use crypto_market_type::MarketType;
use crypto_msg_type::MessageType;
use crypto_ws_client::*;

use super::utils::create_conversion_thread;

const EXCHANGE_NAME: &str = "zbg";

pub(crate) async fn crawl_ticker(
    market_type: MarketType,
    symbols: Option<&[String]>,
    tx: Sender<Message>,
) {
    if symbols.is_none() || symbols.unwrap().is_empty() {
        if market_type == MarketType::Spot {
            let tx = create_conversion_thread(
                EXCHANGE_NAME.to_string(),
                MessageType::Ticker,
                market_type,
                tx,
            );
            let commands: Vec<String> =
                vec![r#"{"action":"ADD", "dataType":"ALL_TRADE_STATISTIC_24H"}"#.to_string()];

            let ws_client = ZbgSpotWSClient::new(tx, None).await;
            ws_client.send(&commands).await;
            ws_client.run().await;
            ws_client.close().await;
        } else {
            let tx = create_conversion_thread(
                EXCHANGE_NAME.to_string(),
                MessageType::Ticker,
                market_type,
                tx,
            );
            let commands: Vec<String> =
                vec![r#"{"action":"sub", "topic":"future_all_indicator"}"#.to_string()];

            let ws_client = ZbgSwapWSClient::new(tx, None).await;
            ws_client.send(&commands).await;
            ws_client.run().await;
            ws_client.close().await;
        }
    } else {
        crawl_event(EXCHANGE_NAME, MessageType::Ticker, market_type, symbols, tx).await;
    }
}