Explorar o código

新增get_symbols接口

skyffire hai 9 meses
pai
achega
b58b0d67aa
Modificáronse 2 ficheiros con 49 adicións e 1 borrados
  1. 28 0
      README.MD
  2. 21 1
      src/server.rs

+ 28 - 0
README.MD

@@ -202,3 +202,31 @@
     "code": 200
 }
 ```
+
+
+
+## /ia/get_symbols  根据交易所获取所有币对
+##### request
+``` json
+{
+    "exchange": "gate_usdt_swap",
+}
+```
+
+##### response
+``` json
+{
+    "msg": "查询成功",
+    "query": {
+        "exchange": "gate_usdt_swap"
+    },
+    "data": [
+        "DOGE_USDT",
+        "CVX_USDT",
+        "VINE_USDT",
+        "VIRTUAL_USDT",
+        ...
+    ],
+    "code": 200
+}
+```

+ 21 - 1
src/server.rs

@@ -7,7 +7,7 @@ use rust_decimal::prelude::ToPrimitive;
 use serde::{Deserialize, Serialize};
 use serde_json::Value;
 use tracing::{info};
-use crate::db_connector::get_exchanges_json;
+use crate::db_connector::{get_exchanges_json, get_symbols_json};
 use crate::depth::generate_simple_depth;
 use crate::msv::{generate_fot, generate_msv};
 use crate::params_utils::{get_array, get_str, parse_str_to_decimal};
@@ -151,6 +151,25 @@ async fn get_exchanges() -> impl Responder {
     HttpResponse::Ok().content_type("application/json").body(json_string)
 }
 
+#[post("/ia/get_symbols")]
+async fn get_symbols(query: web::Json<Value>) -> impl Responder {
+    let query_value = query.clone();
+    // 参数处理
+    let exchange = match get_str(query_value.clone(), "exchange") {
+        Ok(str) => {
+            str
+        }
+        Err(response) => {
+            return response
+        }
+    };
+
+    let response = get_symbols_json(exchange.as_str()).await;
+
+    let json_string = serde_json::to_string(&response).unwrap();
+    HttpResponse::Ok().content_type("application/json").body(json_string)
+}
+
 pub fn run_server(port: u32, running: Arc<AtomicBool>) {
     let addr = format!("0.0.0.0:{}", port);
     info!("指标服务绑定地址:{}", addr);
@@ -169,6 +188,7 @@ pub fn run_server(port: u32, running: Arc<AtomicBool>) {
             .service(get_symbols_by_filter)
             .service(get_indicator)
             .service(get_exchanges)
+            .service(get_symbols)
     })
     .bind(addr)
     .expect("Bind port error")