| 1234567891011121314151617181920212223242526272829 |
- use std::str::FromStr;
- use rust_decimal::Decimal;
- use exchanges::response_base::ResponseData;
- use crate::{Trade};
- pub fn format_trade_items(res_data: &ResponseData) -> Vec<Trade> {
- let arg = res_data.data["arg"].clone();
- let symbol = arg["instId"].as_str().unwrap().to_string().replace("USDT", "_USDT");
- let result = res_data.data["data"].as_array().unwrap();
- let mut trades = vec![];
- for item in result {
- let mut trade = Trade {
- id: item["tradeId"].as_str().unwrap().to_string(),
- time: Decimal::from_str(item["ts"].as_str().unwrap()).unwrap(),
- size: Decimal::from_str(item["size"].as_str().unwrap()).unwrap(),
- price: Decimal::from_str(item["price"].as_str().unwrap().to_string().as_str()).unwrap(),
- symbol: symbol.to_string(),
- };
- if item["side"].as_str().unwrap().eq("sell") {
- trade.size = trade.size * Decimal::NEGATIVE_ONE;
- }
- trades.push(trade)
- }
- return trades;
- }
|