bitget_swap_handle.rs 1011 B

1234567891011121314151617181920212223242526272829
  1. use std::str::FromStr;
  2. use rust_decimal::Decimal;
  3. use exchanges::response_base::ResponseData;
  4. use crate::{Trade};
  5. pub fn format_trade_items(res_data: &ResponseData) -> Vec<Trade> {
  6. let arg = res_data.data["arg"].clone();
  7. let symbol = arg["instId"].as_str().unwrap().to_string().replace("USDT", "_USDT");
  8. let result = res_data.data["data"].as_array().unwrap();
  9. let mut trades = vec![];
  10. for item in result {
  11. let mut trade = Trade {
  12. id: item["tradeId"].as_str().unwrap().to_string(),
  13. time: Decimal::from_str(item["ts"].as_str().unwrap()).unwrap(),
  14. size: Decimal::from_str(item["size"].as_str().unwrap()).unwrap(),
  15. price: Decimal::from_str(item["price"].as_str().unwrap().to_string().as_str()).unwrap(),
  16. symbol: symbol.to_string(),
  17. };
  18. if item["side"].as_str().unwrap().eq("sell") {
  19. trade.size = trade.size * Decimal::NEGATIVE_ONE;
  20. }
  21. trades.push(trade)
  22. }
  23. return trades;
  24. }