Skip to content

Commit e94098d

Browse files
linuraduRadu Linujonte-z
authored
Release 3.0.0
* Release 3.0.0 - Implement HTTP Proxy * Removed unnecessary `secretKey` parameter from `UserData` classes --------- Co-authored-by: Radu Linu <[email protected]> Co-authored-by: Jonte <[email protected]>
1 parent 5bebbb9 commit e94098d

27 files changed

+346
-57
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
## 3.0.0 - 2023-03-06
2+
3+
### Added
4+
- HTTP Proxy Support
5+
6+
### Updated
7+
- Removed unnecessary `secretKey` parameter from `UserData` classes
8+
19
## 2.0.0 - 2023-01-12
210

311
### Fixed

README.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,54 @@ output:
119119
```
120120
INFO: {"data":"{"serverTime":1633434339494}","x-mbx-used-weight":"1","x-mbx-used-weight-1m":"1"}
121121
```
122+
123+
### Proxy
124+
HTTP Proxy is supported.
125+
126+
To set it up, call `setProxy()` with `ProxyAuth` and before submitting requests to binance:
127+
128+
```java
129+
CMFuturesClientImpl client = new CMFuturesClientImpl();
130+
Proxy proxyConn = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8080));
131+
ProxyAuth proxy = new ProxyAuth(proxyConn, null);
132+
133+
client.setProxy(proxy);
134+
logger.info(client.market().time());
135+
```
136+
137+
For authenticated `Proxy`, define `ProxyAuth` with [`Authenticator` from `okhttp3`](https://square.github.io/okhttp/3.x/okhttp/index.html?okhttp3/Authenticator.html):
138+
139+
```java
140+
CMFuturesClientImpl client = new CMFuturesClientImpl();
141+
Proxy proxyConn = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8080));
142+
Authenticator auth = new Authenticator() {
143+
public Request authenticate(Route route, Response response) throws IOException {
144+
if (response.request().header("Proxy-Authorization") != null) {
145+
return null; // Give up, we've already failed to authenticate.
146+
}
147+
148+
String credential = Credentials.basic("username", "password");
149+
return response.request().newBuilder().header("Proxy-Authorization", credential).build();
150+
151+
}
152+
};
153+
ProxyAuth proxy = new ProxyAuth(proxyConn, auth);
154+
155+
client.setProxy(proxy);
156+
logger.info(client.market().time());
157+
```
158+
159+
To undo `Proxy`, use `unsetProxy()` before submitting requests to binance:
160+
161+
```java
162+
client.unsetProxy();
163+
logger.info(client.market().time());
164+
```
165+
166+
Complete examples are available to the following folders:
167+
- `test/java/examples/cm_futures/proxy`
168+
- `test/java/examples/um_futures/proxy`
169+
122170
### Logging
123171

124172
`ch.qos.logback` is used for logging in this connector. The configuration xml file can be found under

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>io.github.binance</groupId>
88
<artifactId>binance-futures-connector-java</artifactId>
9-
<version>2.0.0</version>
9+
<version>3.0.0</version>
1010
<packaging>jar</packaging>
1111
<name>${project.groupId}:${project.artifactId}</name>
1212
<description>lightweight connector to Futures API</description>

src/main/java/com/binance/connector/futures/client/impl/CMFuturesClientImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,21 @@ public CMFuturesClientImpl(String apiKey, String secretKey, String baseUrl) {
3636

3737
@Override
3838
public CMMarket market() {
39-
return new CMMarket(getProductUrl(), getBaseUrl(), getApiKey(), getShowLimitUsage());
39+
return new CMMarket(getProductUrl(), getBaseUrl(), getApiKey(), getShowLimitUsage(), getProxy());
4040
}
4141

4242
@Override
4343
public CMAccount account() {
44-
return new CMAccount(getProductUrl(), getApiKey(), getSecretKey(), getShowLimitUsage());
44+
return new CMAccount(getProductUrl(), getApiKey(), getSecretKey(), getShowLimitUsage(), getProxy());
4545
}
4646

4747
@Override
4848
public CMUserData userData() {
49-
return new CMUserData(getProductUrl(), getApiKey(), getSecretKey(), getShowLimitUsage());
49+
return new CMUserData(getProductUrl(), getApiKey(), getShowLimitUsage(), getProxy());
5050
}
5151

5252
@Override
5353
public CMPortfolioMargin portfolioMargin() {
54-
return new CMPortfolioMargin(getProductUrl(), getApiKey(), getSecretKey(), getShowLimitUsage());
54+
return new CMPortfolioMargin(getProductUrl(), getApiKey(), getSecretKey(), getShowLimitUsage(), getProxy());
5555
}
5656
}

src/main/java/com/binance/connector/futures/client/impl/FuturesClientImpl.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package com.binance.connector.futures.client.impl;
22

33
import com.binance.connector.futures.client.FuturesClient;
4+
import com.binance.connector.futures.client.utils.ProxyAuth;
45

56
public abstract class FuturesClientImpl implements FuturesClient {
67
private final String apiKey;
78
private final String secretKey;
89
private final String baseUrl;
910
private final String productUrl;
1011
private boolean showLimitUsage;
12+
private ProxyAuth proxy = null;
1113

1214
public FuturesClientImpl(String baseUrl, String product) {
1315
this(null, null, baseUrl, product);
@@ -53,4 +55,16 @@ public void setShowLimitUsage(boolean showLimitUsage) {
5355
this.showLimitUsage = showLimitUsage;
5456
}
5557

58+
public void setProxy(ProxyAuth proxy) {
59+
this.proxy = proxy;
60+
}
61+
62+
public ProxyAuth getProxy() {
63+
return proxy;
64+
}
65+
66+
public void unsetProxy() {
67+
this.proxy = null;
68+
}
69+
5670
}

src/main/java/com/binance/connector/futures/client/impl/UMFuturesClientImpl.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.binance.connector.futures.client.impl;
22

33
import com.binance.connector.futures.client.enums.DefaultUrls;
4-
import com.binance.connector.futures.client.impl.um_futures.UMMarket;
54
import com.binance.connector.futures.client.impl.um_futures.UMAccount;
6-
import com.binance.connector.futures.client.impl.um_futures.UMUserData;
5+
import com.binance.connector.futures.client.impl.um_futures.UMMarket;
76
import com.binance.connector.futures.client.impl.um_futures.UMPortfolioMargin;
7+
import com.binance.connector.futures.client.impl.um_futures.UMUserData;
88

99
public class UMFuturesClientImpl extends FuturesClientImpl {
1010
private static String defaultBaseUrl = DefaultUrls.USDM_PROD_URL;
@@ -36,21 +36,21 @@ public UMFuturesClientImpl(String apiKey, String secretKey, String baseUrl) {
3636

3737
@Override
3838
public UMMarket market() {
39-
return new UMMarket(getProductUrl(), getBaseUrl(), getApiKey(), getShowLimitUsage());
39+
return new UMMarket(getProductUrl(), getBaseUrl(), getApiKey(), getShowLimitUsage(), getProxy());
4040
}
4141

4242
@Override
4343
public UMAccount account() {
44-
return new UMAccount(getProductUrl(), getApiKey(), getSecretKey(), getShowLimitUsage());
44+
return new UMAccount(getProductUrl(), getApiKey(), getSecretKey(), getShowLimitUsage(), getProxy());
4545
}
4646

4747
@Override
4848
public UMUserData userData() {
49-
return new UMUserData(getProductUrl(), getApiKey(), getSecretKey(), getShowLimitUsage());
49+
return new UMUserData(getProductUrl(), getApiKey(), getShowLimitUsage(), getProxy());
5050
}
5151

5252
@Override
5353
public UMPortfolioMargin portfolioMargin() {
54-
return new UMPortfolioMargin(getProductUrl(), getApiKey(), getSecretKey(), getShowLimitUsage());
54+
return new UMPortfolioMargin(getProductUrl(), getApiKey(), getSecretKey(), getShowLimitUsage(), getProxy());
5555
}
56-
}
56+
}

src/main/java/com/binance/connector/futures/client/impl/cm_futures/CMAccount.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.binance.connector.futures.client.utils.ParameterChecker;
55
import java.util.LinkedHashMap;
66
import com.binance.connector.futures.client.impl.futures.Account;
7+
import com.binance.connector.futures.client.utils.ProxyAuth;
78

89
/**
910
* <h2>Coin-Margined Trade Endpoints</h2>
@@ -14,8 +15,8 @@
1415
* Response will be returned in <i>String format</i>.
1516
*/
1617
public class CMAccount extends Account {
17-
public CMAccount(String productUrl, String apiKey, String secretKey, boolean showLimitUsage) {
18-
super(productUrl, apiKey, secretKey, showLimitUsage);
18+
public CMAccount(String productUrl, String apiKey, String secretKey, boolean showLimitUsage, ProxyAuth proxy) {
19+
super(productUrl, apiKey, secretKey, showLimitUsage, proxy);
1920
}
2021

2122
private final String ORDER = "/v1/order";

src/main/java/com/binance/connector/futures/client/impl/cm_futures/CMMarket.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.binance.connector.futures.client.utils.ParameterChecker;
55
import java.util.LinkedHashMap;
66
import com.binance.connector.futures.client.impl.futures.Market;
7+
import com.binance.connector.futures.client.utils.ProxyAuth;
78

89
/**
910
* <h2>Coin-Margined Market Endpoints</h2>
@@ -14,8 +15,8 @@
1415
* Response will be returned in <i>String format</i>.
1516
*/
1617
public class CMMarket extends Market {
17-
public CMMarket(String productUrl, String baseUrl, String apiKey, boolean showLimitUsage) {
18-
super(productUrl, baseUrl, apiKey, showLimitUsage);
18+
public CMMarket(String productUrl, String baseUrl, String apiKey, boolean showLimitUsage, ProxyAuth proxy) {
19+
super(productUrl, baseUrl, apiKey, showLimitUsage, proxy);
1920
}
2021

2122
/**

src/main/java/com/binance/connector/futures/client/impl/cm_futures/CMPortfolioMargin.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.LinkedHashMap;
44
import com.binance.connector.futures.client.impl.futures.PortfolioMargin;
5+
import com.binance.connector.futures.client.utils.ProxyAuth;
56

67
/**
78
* <h2>Coin-Margined Portfolio Margin Endpoints</h2>
@@ -12,8 +13,8 @@
1213
* Response will be returned in <i>String format</i>.
1314
*/
1415
public class CMPortfolioMargin extends PortfolioMargin {
15-
public CMPortfolioMargin(String productUrl, String apiKey, String secretKey, boolean showLimitUsage) {
16-
super(productUrl, apiKey, secretKey, showLimitUsage);
16+
public CMPortfolioMargin(String productUrl, String apiKey, String secretKey, boolean showLimitUsage, ProxyAuth proxy) {
17+
super(productUrl, apiKey, secretKey, showLimitUsage, proxy);
1718
}
1819

1920
/**
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.binance.connector.futures.client.impl.cm_futures;
22

33
import com.binance.connector.futures.client.impl.futures.UserData;
4+
import com.binance.connector.futures.client.utils.ProxyAuth;
45

56
/**
67
* <h2>Coin-Margined User Data Streams Endpoints</h2>
@@ -11,7 +12,7 @@
1112
* Response will be returned in <i>String format</i>.
1213
*/
1314
public class CMUserData extends UserData {
14-
public CMUserData(String productUrl, String apiKey, String secretKey, boolean showLimitUsage) {
15-
super(productUrl, apiKey, secretKey, showLimitUsage);
15+
public CMUserData(String productUrl, String apiKey, boolean showLimitUsage, ProxyAuth proxy) {
16+
super(productUrl, apiKey, showLimitUsage, proxy);
1617
}
17-
}
18+
}

0 commit comments

Comments
 (0)