Browse Source

gate - rest 功能接口,打印日志关闭

875428575@qq.com 2 years ago
parent
commit
45c1d519ae
3 changed files with 77 additions and 33 deletions
  1. 1 2
      exchanges/src/binance_usdt_swap_ws.rs
  2. 67 22
      exchanges/src/gate_swap_rest.rs
  3. 9 9
      exchanges/src/http_tool.rs

+ 1 - 2
exchanges/src/binance_usdt_swap_ws.rs

@@ -5,7 +5,6 @@ use std::io::{Write};
 use std::net::{IpAddr, Ipv4Addr, SocketAddr};
 use std::sync::Arc;
 use serde_json::{json, Value};
-use serde_json::ser::Compound::Map;
 use tokio::sync::Mutex;
 use crate::proxy;
 use crate::response_base::ResponseData;
@@ -335,7 +334,7 @@ impl BinanceUsdtSwapWs {
         if json_value.get("result").is_some() {
             //订阅反馈
         } else {
-            println!("????-----:{}", json_value);
+            // println!("????-----:{}", json_value);
             //数据解析
             if let Some(json_obj) = json_value.as_object() {
                 if Self::channel_agg_trade(json_obj.clone()) {

+ 67 - 22
exchanges/src/gate_swap_rest.rs

@@ -140,22 +140,10 @@ impl GateSwapRest {
     }
 
     //合约交易下单
-    pub async fn take_order(&self,
+    pub async fn swap_order(&self,
                             settle: String,
-                            contract: String,
-                            size: i64,
-                            reduce_only: bool,
-                            price: String,
+                            params: serde_json::Value,
     ) -> ResponseData {
-        let params = serde_json::json!({
-            "contract":contract,
-            "size":size
-         });
-        // let mut btree_map: BTreeMap<String, String> = BTreeMap::new();
-        // btree_map.insert("contract".to_string(), contract);
-        // btree_map.insert("size".to_string(), size.to_string());
-
-
         let data = self.request("POST".to_string(),
                                 "/api/v4".to_string(),
                                 format!("/futures/{}/orders", settle),
@@ -164,7 +152,64 @@ impl GateSwapRest {
         ).await;
         data
     }
-
+    //设置持仓模式
+    pub async fn setting_dual_mode(&self,
+                                   settle: String,
+                                   dual_mode: bool,
+    ) -> ResponseData {
+        let params = serde_json::json!({
+                "dual_mode":dual_mode,
+             });
+        let data = self.request("POST".to_string(),
+                                "/api/v4".to_string(),
+                                format!("/futures/{}/dual_mode", settle),
+                                true,
+                                params.to_string(),
+        ).await;
+        data
+    }
+    //更新双仓模式下的杠杆
+    pub async fn setting_dual_leverage(&self,
+                                       settle: String,
+                                       symbol: String,
+                                       leverage: String,
+    ) -> ResponseData {
+        let params = serde_json::json!({
+                "leverage":leverage,
+             });
+        let data = self.request("POST".to_string(),
+                                "/api/v4".to_string(),
+                                format!("/futures/{}/dual_comp/positions/{}/leverage", settle, symbol),
+                                true,
+                                params.to_string(),
+        ).await;
+        data
+    }
+    //交易账户互转
+    pub async fn wallet_transfers(&self,
+                                  currency:String,
+                                  from:String,
+                                  to:String,
+                                  amount:String,
+                                  currency_pair:String,
+                                  settle:String,
+    ) -> ResponseData {
+        let params = serde_json::json!({
+                "currency":settle,
+                "from":from,
+                "to":to,
+                "amount":amount,
+                "currency_pair":currency_pair,
+                "settle":settle,
+             });
+        let data = self.request("POST".to_string(),
+                                "/api/v4".to_string(),
+                                format!("/wallet/transfers"),
+                                true,
+                                params.to_string(),
+        ).await;
+        data
+    }
 
     /*******************************************************************************************************/
     /*****************************************工具函数********************************************************/
@@ -177,7 +222,7 @@ impl GateSwapRest {
                      is_login: bool,
                      params: String) -> ResponseData
     {
-        println!("login_param:{:?}", self.login_param);
+        // println!("login_param:{:?}", self.login_param);
         //解析账号信息
         let mut access_key = "".to_string();
         let mut secret_key = "".to_string();
@@ -206,7 +251,7 @@ impl GateSwapRest {
             headers.insert("Content-Type", "application/json".parse().unwrap());
 
             body = params.clone();
-            println!("---body:{}", body);
+            // println!("---body:{}", body);
         }
 
         //是否需要登陆-- 组装sing
@@ -224,13 +269,13 @@ impl GateSwapRest {
                                   body.clone(),
                                   timestamp.clone(),
                 );
-                println!("sing:{}", sing);
+                // println!("sing:{}", sing);
                 //组装header
                 headers.extend(Self::headers(access_key, timestamp, sing));
             }
         }
 
-        println!("headers:{:?}", headers);
+        // println!("headers:{:?}", headers);
         let mut get_response = self.rest.http_toll(
             format!("{}{}", prefix_url.clone(), request_url.clone()),
             requesst_type.to_string(),
@@ -271,9 +316,9 @@ impl GateSwapRest {
                               params_str,
                               hashed_payload,
                               t);
-        println!("**********", );
-        println!("组装数据:{}", message);
-        println!("**********", );
+        // println!("**********", );
+        // println!("组装数据:{}", message);
+        // println!("**********", );
 
         let mut mac = Hmac::<Sha512>::new_varkey(secret_key.as_bytes()).expect("Failed to create HMAC");
         mac.update(message.as_bytes());

+ 9 - 9
exchanges/src/http_tool.rs

@@ -36,18 +36,18 @@ 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()));
-        println!("------{}", addrs_url);
-        let js = serde_json::json!({
-            "contract":"CYBER_USDT",
-            "size":0
-        });
+        // println!("------{}", addrs_url);
+
+        // let body = params.clone();
+        let body: serde_json::Value = serde_json::from_str(&params).unwrap();
+        // println!("---params:{}", params);
+        // println!("---http_toll-body:{}", body);
+        // let z = BTreeMap::new();
 
-        let body = serde_json::to_string(&params).unwrap();
-        println!("---http_toll-body:{}", body);
 
         let req = match request_type.as_str() {
             "GET" => self.client.get(addrs_url.clone()).headers(headers),
-            "POST" => self.client.post(addrs_url.clone()).headers(headers).body(body),
+            "POST" => self.client.post(addrs_url.clone()).body(params).headers(headers),
             // "DELETE" => self.client.delete(url.clone()).json(&params),
             // "PUT" => self.client.put(url.clone()).json(&params),
             _ => return Ok(ResponseData::error(format!("错误的请求类型:{}", request_type.clone()))), // 处理未知请求类型
@@ -134,7 +134,7 @@ impl RestTool {
                 //     Value::String(s) => s.clone(),
                 //     _ => value.to_string()
                 // };
-                let str = format!("{}={}", key,  formatted_value);
+                let str = format!("{}={}", key, formatted_value);
                 let format_str = format!("{}{}{}", params_str, (if params_str.len() > 0 { "&" } else { "" }), str);
                 params_str = format_str;
             }