db_connector.rs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. use reqwest::Client;
  2. use rust_decimal::Decimal;
  3. use serde::{Deserialize, Serialize};
  4. use serde_json::{json};
  5. use crate::server::Response;
  6. #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
  7. pub struct Trade {
  8. pub id: String,
  9. pub time: Decimal,
  10. pub size: Decimal,
  11. pub price: Decimal
  12. }
  13. pub async fn get_trades_json(exchange: &str, symbol: &str, start_at: i64, end_at: i64) -> Response {
  14. let url = "http://dc.skyfffire.com:8888/trades";
  15. let params = json!({
  16. "exchange": exchange,
  17. "symbol": symbol,
  18. "start_time": start_at,
  19. "end_time": end_at
  20. });
  21. // 创建 HTTP 客户端
  22. let client = Client::new();
  23. // 发送 GET 请求
  24. let response = client.get(url)
  25. .query(&params)
  26. .send()
  27. .await.unwrap();
  28. // 错误处理
  29. if response.status().is_success() {
  30. let response_text = response.text().await.unwrap();
  31. serde_json::from_str(response_text.as_str()).unwrap()
  32. } else {
  33. Response {
  34. message: Some("请求失败,预计是指标层的网络请求错误。".to_string()),
  35. query_string: Default::default(),
  36. data: Default::default(),
  37. code: -200,
  38. }
  39. }
  40. }
  41. #[tokio::test]
  42. async fn get_trades_test() {
  43. use global::log_utils::init_log_with_info;
  44. use tracing::info;
  45. init_log_with_info();
  46. let rst = get_trades_json("bitget_usdt_swap", "BTC_USDT", 1713210360000, 1713210960000).await;
  47. info!(?rst)
  48. }