875428575@qq.com 2 rokov pred
rodič
commit
14b29ce2c2

+ 6 - 9
exchanges/src/binance_usdt_swap_rest.rs

@@ -7,8 +7,6 @@ use crate::response_base::ResponseData;
 
 pub struct BinanceUsdtSwapRest {
     /*******参数*/
-    //是否需要登陆
-    is_login: bool,
     //登陆所需参数
     login_param: BTreeMap<String, String>,
     rest: RestTool,
@@ -18,9 +16,9 @@ impl BinanceUsdtSwapRest {
     /*******************************************************************************************************/
     /*****************************************获取一个对象****************************************************/
     /*******************************************************************************************************/
-    pub fn new(is_colo: bool, is_login: bool, login_param: BTreeMap<String, String>) -> BinanceUsdtSwapRest
+    pub fn new(is_colo: bool, login_param: BTreeMap<String, String>) -> BinanceUsdtSwapRest
     {
-        let mut base_url = String::from("");
+        let mut base_url = "".to_string();
         if is_colo {
             println!("不支持colo高速线路");
             base_url = "https://fapi.binance.com".to_string()
@@ -30,7 +28,6 @@ impl BinanceUsdtSwapRest {
 
         /*****返回结构体*******/
         BinanceUsdtSwapRest {
-            is_login,
             login_param,
             rest: RestTool::new(base_url.to_string()),
         }
@@ -51,7 +48,7 @@ impl BinanceUsdtSwapRest {
             "/fapi/v2/balance".to_string(),
             "get".to_string(),
             params,
-            self.get_headers(),
+            self.get_headers(true),
         ).await;
         let mut req_data = RestTool::req_data_analysis(get_response);
         req_data.channel = "account".to_string();
@@ -63,10 +60,10 @@ impl BinanceUsdtSwapRest {
     /*****************************************工具函数********************************************************/
     /*******************************************************************************************************/
     //组装heander
-    fn get_headers(&self) -> HeaderMap {
+    fn get_headers(&self, is_login: bool) -> HeaderMap {
         let mut headers = HeaderMap::new();
         headers.insert("Content-Type", "application/json; charset=UTF-8".parse().unwrap());
-        if self.is_login {
+        if is_login {
             let access_key = self.login_param.get("access_key");
             match access_key {
                 None => {}
@@ -80,7 +77,7 @@ impl BinanceUsdtSwapRest {
     }
 
     //生成sign,重新组装param
-    fn get_sign(&self, mut params_str: String) -> String {
+    fn get_sign(&self,  params_str: String) -> String {
         let mut params: serde_json::Value = serde_json::from_str(params_str.clone().as_str()).unwrap();
         if let Some(map) = params.as_object_mut() {
             map.insert("timestamp".to_owned(), chrono::Utc::now().timestamp_millis().to_string().parse().unwrap());

+ 12 - 21
exchanges/src/binance_usdt_swap_ws.rs

@@ -1,11 +1,7 @@
 use std::collections::BTreeMap;
-use std::future::Future;
-use std::{io};
-use std::io::{Write};
 use std::net::{IpAddr, Ipv4Addr, SocketAddr};
-use std::sync::{Arc, mpsc};
+use std::sync::{mpsc};
 use serde_json::{json, Value};
-use tokio::sync::Mutex;
 use crate::proxy;
 use crate::response_base::ResponseData;
 use tungstenite::client::{AutoStream, connect_with_proxy, ProxyAutoStream};
@@ -22,8 +18,6 @@ pub struct BinanceUsdtSwapWs {
     ip: String,
     //端口
     port: u16,
-    //是否需要登陆
-    is_login: bool,
     //登陆所需参数
     login_param: BTreeMap<String, String>,
 
@@ -35,18 +29,16 @@ impl BinanceUsdtSwapWs {
     /*****************************************获取一个对象****************************************************/
     /*******************************************************************************************************/
     pub fn new(is_colo: bool,
-               is_login: bool,
                login_param: BTreeMap<String, String>,
                sender: mpsc::Sender<ResponseData>,
     ) -> BinanceUsdtSwapWs
     {
-        let mut base_url = String::from("");
-        if is_colo {
+        let base_url = if is_colo {
             println!("不支持colo高速线路");
-            base_url = "wss://stream.binance.com:443/ws".to_string()
+            "wss://stream.binance.com:443/ws".to_string()
         } else {
-            base_url = "wss://stream.binance.com:443/ws".to_string()
-        }
+            "wss://stream.binance.com:443/ws".to_string()
+        };
         let mut ip_v = "";
         let mut port_v = 8080;
 
@@ -62,7 +54,6 @@ impl BinanceUsdtSwapWs {
             request_url: base_url,
             ip: ip_v.clone().to_string(),
             port: port_v,
-            is_login,
             login_param,
             sender,
         }
@@ -91,7 +82,7 @@ impl BinanceUsdtSwapWs {
         let mut params = vec![];
 
         for item in &b_array {
-            let mut b_name = item.to_lowercase();
+            let  b_name = item.to_lowercase();
             if sub_trade > 0 {
                 params.push(format!("{}@aggTrade", b_name));
             }
@@ -122,8 +113,8 @@ impl BinanceUsdtSwapWs {
         // let parse_fn_arc = Arc::new(Mutex::new(parse_fn)); // Wrap the closure in an Arc<Mutex<_>>
         loop {
             //币安-登陆流程-rest请求获取k然后拿到 key 拼接地址
-            if self.is_login { //暂时没看到有订阅的频道需要登陆 所以暂时不做
-            }
+            // if self.is_login { //暂时没看到有订阅的频道需要登陆 所以暂时不做
+            // }
 
             let request_url = Url::parse(self.request_url.as_str()).unwrap();
             //1. 判断是否需要代理,根据代理地址是否存来选择
@@ -142,12 +133,12 @@ impl BinanceUsdtSwapWs {
                     accept_unmasked_frames: false,
                 });
                 let max_redirects = 5;
-                let mut proxy_ws =
+                let  proxy_ws =
                     connect_with_proxy(request_url.clone(), proxy_address, websocket_config, max_redirects)
                         .expect("Can't connect(无法连接)");
                 self.proxy_subscription(proxy_ws.0, &subscription);
             } else {
-                let mut no_proxy_ws =
+                let  no_proxy_ws =
                     connect(request_url.clone())
                         .expect("Can't connect(无法连接)");
                 self.subscription(no_proxy_ws.0, &subscription);
@@ -163,7 +154,7 @@ impl BinanceUsdtSwapWs {
 
     {
         /*****消息溜***/
-        let mut stdout = io::stdout();
+        // let mut stdout = io::stdout();
         // let mut stderr = io::stderr();
         // /*****是否需要登陆****/
         // if self.is_login {
@@ -219,7 +210,7 @@ impl BinanceUsdtSwapWs {
 
     {
         /*****消息溜***/
-        let mut stdout = io::stdout();
+        // let  stdout = io::stdout();
         // let mut stderr = io::stderr();
         /*****是否需要登陆****/
         // if self.is_login {

+ 7 - 11
exchanges/src/gate_swap_rest.rs

@@ -12,8 +12,6 @@ pub struct GateSwapRest {
     base_url: String,
     client: reqwest::Client,
     /*******参数*/
-    //是否需要登陆
-    is_login: bool,
     //登陆所需参数
     login_param: BTreeMap<String, String>,
 }
@@ -22,21 +20,19 @@ impl GateSwapRest {
     /*******************************************************************************************************/
     /*****************************************获取一个对象****************************************************/
     /*******************************************************************************************************/
-    pub fn new(is_colo: bool, is_login: bool, login_param: BTreeMap<String, String>) -> GateSwapRest
+    pub fn new(is_colo: bool, login_param: BTreeMap<String, String>) -> GateSwapRest
     {
-        let mut base_url = String::from("");
-        if is_colo {
+        let  base_url = if is_colo {
             println!("使用colo高速线路");
-            base_url = "https://apiv4-private.gateapi.io".to_string()
+           "https://apiv4-private.gateapi.io".to_string()
         } else {
-            base_url = "https://api.gateio.ws".to_string()
-        }
+         "https://api.gateio.ws".to_string()
+        };
 
         /*****返回结构体*******/
         GateSwapRest {
             base_url: base_url.to_string(),
             client: Client::new(),
-            is_login,
             login_param,
         }
     }
@@ -325,13 +321,13 @@ impl GateSwapRest {
         }
 
         // println!("headers:{:?}", headers);
-        let mut get_response = self.http_toll(
+        let  get_response = self.http_toll(
             format!("{}{}", prefix_url.clone(), request_url.clone()),
             requesst_type.to_string(),
             params,
             headers,
         ).await;
-        let mut req_data = Self::req_data_analysis(get_response);
+        let  req_data = Self::req_data_analysis(get_response);
         req_data
     }
 

+ 1 - 1
exchanges/src/http_tool.rs

@@ -35,7 +35,7 @@ impl RestTool {
         let url = format!("{}{}", self.base_url.to_string(), request_path);
         let request_type = request_type.clone().to_uppercase();
         let addrs_url = format!("{}?{}", url.clone(), RestTool::parse_params_to_str(params.clone()));
-        let params_json: serde_json::Value = serde_json::from_str(&params).unwrap();
+        // let params_json: serde_json::Value = serde_json::from_str(&params).unwrap();
         // println!("url:{}",url);
         // println!("addrs_url:{}",url);
         // println!("params_json:{}",params_json);

+ 21 - 27
exchanges/src/kucoin_swap_rest.rs

@@ -1,8 +1,5 @@
 use std::collections::BTreeMap;
-use std::ops::Index;
 use reqwest::header::HeaderMap;
-use ring::{digest};
-use hex;
 use hmac::{Hmac, Mac, NewMac};
 use reqwest::{Client};
 use sha2::Sha256;
@@ -14,7 +11,6 @@ pub struct KucoinSwapRest {
     client: reqwest::Client,
     /*******参数*/
     //是否需要登陆
-    is_login: bool,
     //登陆所需参数
     login_param: BTreeMap<String, String>,
 
@@ -24,21 +20,20 @@ impl KucoinSwapRest {
     /*******************************************************************************************************/
     /*****************************************获取一个对象****************************************************/
     /*******************************************************************************************************/
-    pub fn new(is_colo: bool, is_login: bool, login_param: BTreeMap<String, String>) -> KucoinSwapRest
+
+    pub fn new(is_colo: bool, login_param: BTreeMap<String, String>) -> KucoinSwapRest
     {
-        let mut base_url = String::from("");
-        if is_colo {
+        let base_url = if is_colo {
             println!("不支持colo高速线路");
-            base_url = "https://api-futures.kucoin.com".to_string()
+            "https://api-futures.kucoin.com".to_string()
         } else {
-            base_url = "https://api-futures.kucoin.com".to_string()
-        }
+            "https://api-futures.kucoin.com".to_string()
+        };
 
         /*****返回结构体*******/
         KucoinSwapRest {
-            base_url: base_url.to_string(),
+            base_url,
             client: Client::new(),
-            is_login,
             login_param,
         }
     }
@@ -85,7 +80,7 @@ impl KucoinSwapRest {
     }
     //查询所有的合约信息
     pub async fn get_market_details(&self) -> ResponseData {
-        let mut params = serde_json::json!({});
+        let params = serde_json::json!({});
 
         let data = self.request("GET".to_string(),
                                 "/api/v1".to_string(),
@@ -256,8 +251,7 @@ impl KucoinSwapRest {
 
         //请求头配置-如果需要登陆则存在额外配置
         let mut body = "".to_string();
-        let mut sing = "".to_string();
-        let mut passphrase = "".to_string();
+
         let timestamp = chrono::Utc::now().timestamp_millis().to_string();
 
         let mut headers = HeaderMap::new();
@@ -275,16 +269,16 @@ impl KucoinSwapRest {
                 println!("param:{}", params);
                 println!("body:{}", body);
                 //组装sing
-                sing = Self::sign(secret_key.clone(),
-                                  method.clone(),
-                                  prefix_url.clone(),
-                                  request_url.clone(),
-                                  params.clone(),
-                                  body.clone(),
-                                  timestamp.clone(),
+                let sing = Self::sign(secret_key.clone(),
+                                      method.clone(),
+                                      prefix_url.clone(),
+                                      request_url.clone(),
+                                      params.clone(),
+                                      body.clone(),
+                                      timestamp.clone(),
                 );
                 println!("sing:{}", sing);
-                passphrase = Self::passphrase(secret_key, pass_key);
+                let passphrase = Self::passphrase(secret_key, pass_key);
                 println!("passphrase:{}", passphrase);
                 //组装header
                 headers.extend(Self::headers(sing, timestamp, passphrase, access_key));
@@ -293,14 +287,14 @@ impl KucoinSwapRest {
 
 
         // println!("headers:{:?}", headers);
-        let mut get_response = self.http_toll(
+        let get_response = self.http_toll(
             format!("{}{}", prefix_url.clone(), request_url.clone()),
             method.to_string(),
             params,
             headers,
         ).await;
 
-        let mut req_data = Self::req_data_analysis(get_response);
+        let req_data = Self::req_data_analysis(get_response);
         req_data
     }
 
@@ -383,11 +377,11 @@ impl KucoinSwapRest {
         if response.status().is_success() {
             // 读取响应的内容
             let body = response.text().await?;
-            println!("ok-----{}", body);
+            // println!("ok-----{}", body);
             req_data = ResponseData::new("200".to_string(), "success".to_string(), body);
         } else {
             let body = response.text().await?;
-            println!("error-----{}", body);
+            // println!("error-----{}", body);
             req_data = ResponseData::error(body.to_string())
         }
         Ok(req_data)

+ 2 - 10
exchanges/src/socket_tool.rs

@@ -1,15 +1,7 @@
-use std::collections::BTreeMap;
-use std::future::Future;
-use std::{io};
-use std::io::{Write};
 use std::net::{IpAddr, Ipv4Addr, SocketAddr};
-use std::sync::{Arc, mpsc};
-use serde_json::{json, Value};
-use tokio::sync::Mutex;
 use crate::proxy;
-use crate::response_base::ResponseData;
-use tungstenite::client::{AutoStream, connect_with_proxy, ProxyAutoStream};
-use tungstenite::{connect, Message, WebSocket};
+use tungstenite::client::{  connect_with_proxy, ProxyAutoStream};
+use tungstenite::{ WebSocket};
 use tungstenite::protocol::WebSocketConfig;
 use url::Url;
 use crate::proxy::ParsingDetail;