Browse Source

警告处理

hl 1 năm trước cách đây
mục cha
commit
1a5c457f7e

+ 16 - 20
exchanges/src/binance_swap_rest.rs

@@ -1,9 +1,8 @@
 use std::collections::BTreeMap;
-use std::str::FromStr;
 
 use hex;
-use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
-use reqwest::{Client, Proxy};
+use percent_encoding::{NON_ALPHANUMERIC, utf8_percent_encode};
+use reqwest::Client;
 use reqwest::header::HeaderMap;
 use ring::hmac;
 use rust_decimal::Decimal;
@@ -133,7 +132,7 @@ impl BinanceSwapRest {
         data
     }
     //调整开仓杠杆
-    pub async fn setting_dual_leverage(&mut self, params:Value) -> ResponseData {
+    pub async fn setting_dual_leverage(&mut self, params: Value) -> ResponseData {
         let data = self.request("POST".to_string(),
                                 "".to_string(),
                                 format!("/fapi/v1/leverage"),
@@ -144,7 +143,7 @@ impl BinanceSwapRest {
     }
 
     //查询订单
-    pub async fn get_order(&mut self,params:Value) -> ResponseData {
+    pub async fn get_order(&mut self, params: Value) -> ResponseData {
         let data = self.request("GET".to_string(),
                                 "".to_string(),
                                 format!("/fapi/v1/order"),
@@ -370,8 +369,7 @@ impl BinanceSwapRest {
         params_json["timestamp"] = Value::from(timestamp);
         params_json["recvWindow"] = Value::from(2000);
 
-        let mut body = "".to_string();
-        let mut params = "".to_string();
+
         let mut headers = HeaderMap::new();
         if method == "GET" {
             headers.insert("Content-Type", "application/json; charset=UTF-8".parse().unwrap());
@@ -385,12 +383,11 @@ impl BinanceSwapRest {
             if !is_login_param {
                 let e = ResponseData::error(self.label.clone(), "登录参数错误!".to_string());
                 return e;
-            } else { //需要登录-且登录参数齐全
+            } else {
+                //需要登录-且登录参数齐全
                 trace!("this------params_json:{}", params_json.clone());
                 //组装sing
-                let sing = Self::sign(secret_key.clone(),
-                                      params_json.to_string(),
-                );
+                let sing = Self::sign(secret_key.clone(), params_json.to_string());
                 params_json["signature"] = serde_json::Value::from(sing.clone());
                 // trace!("sing:{}", sing);
                 //组装header
@@ -399,8 +396,8 @@ impl BinanceSwapRest {
         }
 
         let z = params_json.to_string();
-        body = RestTool::parse_params_to_str(z.clone());
-        params = RestTool::parse_params_to_str(z.clone());
+        let body = RestTool::parse_params_to_str(z.clone());
+        let params = RestTool::parse_params_to_str(z.clone());
 
 
         trace!("headers:{:?}", headers);
@@ -468,7 +465,6 @@ impl BinanceSwapRest {
             format!("{}?{}", url.clone(), params)
         };
 
-        let query = params.clone();
         trace!("url-----:{}",url.clone());
         trace!("addrs_url-----:{}",addrs_url.clone());
         trace!("params-----:{}",params.clone());
@@ -483,13 +479,13 @@ impl BinanceSwapRest {
             proxy::ParsingDetail::http_enable_proxy(None);
         };
 
-        let client = Client::new();
+        // let client = Client::new();
 
         let request_builder = match request_type.as_str() {
-            "GET" => client.get(addrs_url.clone()).headers(headers),
-            "POST" => client.post(url.clone()).body(body).headers(headers),
-            "DELETE" => client.delete(addrs_url.clone()).headers(headers),
-            "PUT" => client.put(addrs_url.clone()).headers(headers),
+            "GET" => self.client.get(addrs_url.clone()).headers(headers),
+            "POST" => self.client.post(url.clone()).body(body).headers(headers),
+            "DELETE" => self.client.delete(addrs_url.clone()).headers(headers),
+            "PUT" => self.client.put(addrs_url.clone()).headers(headers),
             _ => {
                 panic!("{}", format!("错误的请求类型:{}", request_type.clone()))
             }
@@ -499,7 +495,7 @@ impl BinanceSwapRest {
         let response = request_builder.send().await.unwrap();
         let is_success = response.status().is_success(); // 先检查状态码
         let text = response.text().await.unwrap();
-        trace!("text:???{:?}",text);
+        // trace!("text:???{:?}",text);
         return if is_success {
             self.on_success_data(text)
         } else {

+ 18 - 56
exchanges/src/binance_swap_ws.rs

@@ -29,7 +29,7 @@ pub enum BinanceSwapSubscribeType {
 
     PrAccount,
     PrBalance,
-    PrPosition
+    PrPosition,
 }
 
 //账号信息
@@ -40,13 +40,7 @@ pub struct BinanceSwapLogin {
     pub api_secret: String,
 }
 
-//login
-#[derive(Clone)]
-#[allow(dead_code)]
-pub struct BinanceSwapLoginLinLink {
-    listenKey: String,
-    out_time: i64,
-}
+
 
 #[derive(Clone)]
 #[allow(dead_code)]
@@ -57,8 +51,6 @@ pub struct BinanceSwapWs {
     address_url: String,
     //账号
     login_param: Option<BinanceSwapLogin>,
-    //link _param
-    link_param: BinanceSwapLoginLinLink,
     //币对
     symbol_s: Vec<String>,
     //订阅
@@ -76,10 +68,6 @@ impl BinanceSwapWs {
         return BinanceSwapWs::new_label("default-BinanceSwapWs".to_string(), is_colo, login_param, ws_type).await;
     }
     pub async fn new_label(label: String, is_colo: bool, login_param: Option<BinanceSwapLogin>, ws_type: BinanceSwapWsType) -> BinanceSwapWs {
-        let mut link_param = BinanceSwapLoginLinLink {
-            listenKey: "".to_string(),
-            out_time: 0,
-        };
         /*******公共频道-私有频道数据组装*/
         let address_url = match ws_type {
             BinanceSwapWsType::Public => {
@@ -88,30 +76,6 @@ impl BinanceSwapWs {
             }
             BinanceSwapWsType::Private => {
                 "wss://fstream.binance.com/ws/".to_string()
-                // match login_param.clone() {
-                //     None => {
-                //         "wss://fstream.binance.com/stream".to_string()
-                //     }
-                //     Some(dto) => {
-                //         let mut btree_map: BTreeMap<String, String> = BTreeMap::new();
-                //         btree_map.insert("access_key".to_string(), dto.api_key.clone());
-                //         btree_map.insert("secret_key".to_string(), dto.api_secret.clone());
-                //
-                //         let mut ba_exc = BinanceSwapRest::new(false, btree_map);
-                //         let rep_data = ba_exc.close_listen_key(json!({   })).await;
-                //         if (rep_data.code == 200) {
-                //             let listenKey = rep_data.data["listenKey"].as_str().unwrap();
-                //             trace!("拿到-data:{}",rep_data.data.clone());
-                //             trace!("拿到-listenKey:{}",listenKey.clone());
-                //             link_param.listenKey = listenKey.to_string();
-                //             link_param.out_time = chrono::Utc::now().timestamp_millis() + (1000 * 60 * 55);
-                //             format!("wss://fstream.binance.com/ws/{}", listenKey)
-                //         } else {
-                //             error!("binance_usdt_swap socket get listenKey, is error");
-                //             "".to_string()
-                //         }
-                //     }
-                // }
             }
         };
 
@@ -125,7 +89,6 @@ impl BinanceSwapWs {
             label,
             address_url,
             login_param,
-            link_param,
             symbol_s: vec![],
             subscribe_types: vec![],
             heartbeat_time: 1000 * 20,
@@ -160,7 +123,7 @@ impl BinanceSwapWs {
 
                 BinanceSwapSubscribeType::PrAccount => { true }
                 BinanceSwapSubscribeType::PrBalance => { true }
-                BinanceSwapSubscribeType::PrPosition => {true}
+                BinanceSwapSubscribeType::PrPosition => { true }
             } {
                 return true;
             }
@@ -222,13 +185,13 @@ impl BinanceSwapWs {
         for symbol in &self.symbol_s {
             for subscribe_type in &self.subscribe_types {
                 let ty_str = Self::enum_to_string_pu(symbol.clone(), subscribe_type.clone());
-                if (ty_str != "".to_string()) {
+                if ty_str != "".to_string() {
                     params.push(ty_str);
                 }
             }
         }
 
-        if (params.len() > 0) {
+        if params.len() > 0 {
             let str = json!({
             "method": "SUBSCRIBE",
             "params":  params,
@@ -243,7 +206,7 @@ impl BinanceSwapWs {
         let mut params = vec![];
         for subscribe_type in &self.subscribe_types {
             let ty_str = Self::enum_to_string_pr(subscribe_type.clone());
-            if (ty_str != "".to_string()) {
+            if ty_str != "".to_string() {
                 params.push(ty_str);
             }
         }
@@ -270,17 +233,16 @@ impl BinanceSwapWs {
                                              handle_function: F,
                                              _write_tx_am: &Arc<Mutex<UnboundedSender<Message>>>,
                                              write_to_socket_rx: UnboundedReceiver<Message>) -> Result<(), Error>
-    where
-        F: Fn(ResponseData) -> Future + Clone + Send + 'static + Sync,
-        Future: std::future::Future<Output=()> + Send + 'static, // 确保 Fut 是一个 Future,且输出类型为 ()
+        where
+            F: Fn(ResponseData) -> Future + Clone + Send + 'static + Sync,
+            Future: std::future::Future<Output=()> + Send + 'static, // 确保 Fut 是一个 Future,且输出类型为 ()
     {
         let login_is = self.contains_pr();
-        let link_param = self.link_param.clone();
         let subscription_pu = self.get_subscription_pu();
         let subscription_pr = self.get_subscription_pr();
         let address_url = self.address_url.clone();
         let label = self.label.clone();
-        let heartbeat_time = self.heartbeat_time.clone();
+        // let heartbeat_time: u64 = self.heartbeat_time.clone();
         let login_param_dto = self.login_param.clone();
 
 
@@ -318,13 +280,13 @@ impl BinanceSwapWs {
 
                             let mut ba_exc = BinanceSwapRest::new(false, btree_map);
                             let rep_data = ba_exc.get_listen_key(json!({   })).await;
-                            trace!("拿到-rep_data:{:?}",rep_data) ;
-                            if (rep_data.code == 200) {
-                                let listenKey = rep_data.data["listenKey"].as_str().unwrap();
-                                trace!("拿到-data:{}",rep_data.data.clone());
-                                trace!("拿到-listenKey:{}",listenKey.clone());
+                            trace!("拿到-rep_data:{:?}",rep_data);
+                            if rep_data.code == 200 {
+                                let listen_key_str = rep_data.data["listenKey"].as_str().unwrap();
+                                // trace!("拿到-data:{}",rep_data.data.clone());
+                                // trace!("拿到-listenKey:{}",listen_key_str.clone());
                                 // format!("{}{}",  address_url.clone(), listenKey
-                                listenKey.to_string()
+                                listen_key_str.to_string()
                             } else {
                                 "".to_string()
                             }
@@ -401,8 +363,8 @@ impl BinanceSwapWs {
     }
     //数据解析
     pub fn ok_text(text: String) -> ResponseData {
-        trace!("原始数据");
-        trace!(?text);
+        // trace!("原始数据");
+        // trace!(?text);
         let mut res_data = ResponseData::new("".to_string(), 200, "success".to_string(), Value::Null);
         let json_value: Value = serde_json::from_str(&text).unwrap();
 

+ 9 - 10
exchanges/tests/binance_swap_test.rs

@@ -1,19 +1,17 @@
-use std::cmp::max;
 use std::collections::BTreeMap;
 use std::sync::Arc;
 use std::sync::atomic::AtomicBool;
-use futures_util::StreamExt;
+
 use serde_json::json;
 use tokio::sync::Mutex;
-use tracing::{info, trace};
+use tracing::trace;
 
 use exchanges::binance_swap_rest::BinanceSwapRest;
 use exchanges::binance_swap_ws::{BinanceSwapLogin, BinanceSwapSubscribeType, BinanceSwapWs, BinanceSwapWsType};
 use exchanges::response_base::ResponseData;
-use global::trace_stack::TraceStack;
 
-const ACCESS_KEY: &str = "";
-const SECRET_KEY: &str = "";
+const ACCESS_KEY: &str = "rgKH05A1QOpXj4NDKuIb8edOLPPpF0gYu8WBpiAIqG4aCwHsytjFWiOtoWYUPB7R";
+const SECRET_KEY: &str = "14573tSKmHLyV5WO7L31hNK0HZ21yiyMqWg85POvrKDyOn2i9bZKNTlPBUqR3fpm";
 
 
 //ws-订阅公共频道信息
@@ -81,15 +79,16 @@ async fn ws_custom_subscribe() {
         api_secret: SECRET_KEY.to_string(),
     };
     let t1 = tokio::spawn(async move {
-        let mut ws = get_ws(Option::from(param), BinanceSwapWsType::Private).await;
+        let mut ws = get_ws(Option::from(param), BinanceSwapWsType::Public).await;
         ws.set_symbols(vec!["BTC_USDT".to_string(), "ETC_USDT".to_string()]);
         ws.set_subscribe(vec![
-            // BinanceSwapSubscribeType::PuBookTicker,
+            BinanceSwapSubscribeType::PuBookTicker,
             // BinanceSwapSubscribeType::PuAggTrade,
             // BinanceSwapSubscribeType::PuDepth20levels100ms,
 
-            BinanceSwapSubscribeType::PrAccount,
-            BinanceSwapSubscribeType::PrBalance,
+            // BinanceSwapSubscribeType::PrAccount,
+            // BinanceSwapSubscribeType::PrBalance,
+            // BinanceSwapSubscribeType::PrPosition
         ]);
         //链接
         let bool_v3_clone = Arc::clone(&is_shutdown_arc);