Skip to content

Commit 997fa33

Browse files
aisling-2Hazard4U
andauthored
v3.0.0rc2 release (#82)
* Add and improve WebSocket callbacks (#81) * refactor(websockets)!: remove WebSocketCallback abstraction to avoid losing data between websockets and callbacks * style: fix code style issues * v1.11.0 (#62) * v1.12.0 (#66) * v2.0.0rc1 (#71) * 2.0.0rc2 (#74) * version 2.0.0 (#78) * 3.0.0rc1 release * update date * complete websocket callbacks --------- Co-authored-by: Théo Martel <[email protected]> * v3.0.0rc2 release --------- Co-authored-by: Théo Martel <[email protected]>
1 parent b522c22 commit 997fa33

File tree

521 files changed

+2867
-1649
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

521 files changed

+2867
-1649
lines changed

.github/workflows/java.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ jobs:
1313
java-version: [ 8, 11, 17 ]
1414

1515
steps:
16-
- uses: actions/checkout@v2
16+
- uses: actions/checkout@v3
1717
- name: Set up JDK 8
18-
uses: actions/setup-java@v2
18+
uses: actions/setup-java@v3
1919
with:
2020
java-version: ${{ matrix.java-version }}
2121
distribution: 'adopt'

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,32 @@
11
# Changelog
22

3+
## 3.0.0rc2 - 2023-05-31
4+
5+
### Added
6+
- Added WebSocket callbacks to `utils` directory with the aim of facilitating the transmission of various types of data from WebSocket connections (in addition to `onMessage`): `WebSocketClosedCallback`, `WebSocketClosingCallback`, `WebSocketFailureCallback` and `WebSocketOpenCallback`.
7+
- New endpoints for Convert:
8+
- `GET /sapi/v1/convert/exchangeInfo` to query for all convertible token pairs and its limits information.
9+
- `GET /sapi/v1/convert/assetInfo` to query supported assets quantity precision information.
10+
- `POST /sapi/v1/convert/getQuote` to request a quote for the provided token pairs.
11+
- `POST /sapi/v1/convert/acceptQuote` to accept the offered quote by quote ID.
12+
- `GET /sapi/v1/convert/orderStatus` to query order status by order ID.
13+
- New endpoint for Wallet:
14+
- `GET /sapi/v1/asset/ledger-transfer/cloud-mining/queryByPage` to query Cloud-Mining payment and refund history.
15+
- New endpoint for Sub-account:
16+
- `POST /sapi/v2/sub-account/subAccountApi/ipRestriction` to support master account to update IP Restriction for a sub-account API key.
17+
- Added Enums `DefaultUrls.MARKET_URL` and `DefaultUrls.MARKET_WS_URL` to be optionally used to retrieve market data.
18+
19+
### Removed
20+
- The following endpoints was discontinued on January 13, 2023 6:00 AM UTC:
21+
- `POST /sapi/v1/sub-account/subAccountApi/ipRestriction` to support master account enable and disable IP restriction for a sub-account API Key.
22+
- `POST /sapi/v1/sub-account/subAccountApi/ipRestriction/ipList` to support master account add IP list for a sub-account API Key.
23+
24+
### Changed
25+
- Renamed `WebSocketCallback` to `WebSocketMessageCallback` and moved it to the `utils` directory.
26+
- Updated parameter type from `LinkedHashMap<String, Object>` to `Map<String, Object>` in certain methods to support various data structures implementing the Map interface.
27+
- Renamed Enum `DefaultUrls.TESTNET_WSS_URL` to `DefaultUrls.TESTNET_WS_URL`.
28+
- Improved `utils.UrlBuilder` and `utils.RequestHandler` code readability.
29+
330
## 3.0.0rc1 - 2023-05-12
431

532
### Added

README.md

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ String result = client.createMarket().exchangeInfo();
7777

7878
#### Trade Endpoint: Testing a new order
7979
```java
80-
LinkedHashMap<String,Object> parameters = new LinkedHashMap<String,Object>();
80+
Map<String,Object> parameters = new LinkedHashMap<String,Object>();
8181

8282
SpotClient client = new SpotClientImpl(PrivateConfig.API_KEY, PrivateConfig.SECRET_KEY);
8383

@@ -117,7 +117,9 @@ wsStreamClient.closeConnection(streamID1); //closes aggTradeStream-btcusdt
117117
wsStreamClient.closeAllConnections();
118118
```
119119

120-
More examples are available at `test/examples/websocketstream` folder
120+
Different types of WebSocket callbacks are available. Please refer to the `src/test/java/examples/websocketstream/TradeStreamWithAllCallbacks.java` example file to explore their usage.
121+
122+
More examples are available at `src/test/java/examples/websocketstream` folder.
121123

122124
### WebSocket API
123125

@@ -144,15 +146,17 @@ wsApiClient.close();
144146

145147
If `requestId` is empty (`""`), `null` or not sent, this library will generate a `UUID` string for it.
146148

147-
More examples are available at `test/examples/websocketapi` folder
149+
Different types of WebSocket callbacks are available. Please refer to the `src/test/java/examples/websocketapi/WsApiwithAllCallbacks.java` example file to explore their usage.
150+
151+
More examples are available at `src/test/java/examples/websocketapi` folder.
148152

149153
### Testnet
150154

151155
While `/sapi/*` endpoints don't have testnet environment yet, `/api/*` endpoints can be tested in
152156
[Spot Testnet](https://testnet.binance.vision/). You can use it by changing the base URL:
153157

154158
```java
155-
LinkedHashMap<String,Object> parameters = new LinkedHashMap<>();
159+
Map<String,Object> parameters = new LinkedHashMap<>();
156160

157161
SpotClient client = new SpotClientImpl(PrivateConfig.TESTNET_API_KEY, PrivateConfig.TESTNET_SECRET_KEY, PrivateConfig.TESTNET_URL);
158162
String result = client.createMarket().time();
@@ -161,18 +165,17 @@ String result = client.createMarket().time();
161165
### Base URL
162166

163167
If `baseUrl` is not provided, it defaults to `api.binance.com`.<br/>
164-
It's recommended to pass in the `baseUrl` parameter, even in production as Binance provides alternative URLs
165-
in case of performance issues:
168+
It's recommended to pass in the `baseUrl` parameter, even in production as Binance provides alternative URLs:
166169
- `https://api1.binance.com`
167170
- `https://api2.binance.com`
168171
- `https://api3.binance.com`
172+
- `https://api4.binance.com`
169173

170174
### Optional parameters
171175

172-
All parameters are read from a `LinkedHashMap<String,Object>` object where `String` is the
173-
name of the parameter and `Object` is the value of the parameter. The parameters should follow their exact naming as in the API documentation.<br>
176+
All parameters are read from a `Map<String, Object>` implemented data structure where `String` is the name of the parameter and `Object` is the value of the parameter. The parameters should follow their exact naming as in the API documentation.<br>
174177
```java
175-
LinkedHashMap<String,Object> parameters = new LinkedHashMap<String,Object>();
178+
Map<String,Object> parameters = new LinkedHashMap<String,Object>();
176179

177180
parameters.put("symbol","BTCUSDT");
178181
parameters.put("side", "SELL");
@@ -240,7 +243,7 @@ client.unsetProxy();
240243
logger.info(client.createMarket().time());
241244
```
242245

243-
Complete examples are available at `test/examples/proxy` folder.
246+
Complete examples are available at `src/test/java/examples/spot/proxy` folder.
244247

245248
### Logging
246249
This connector uses [`SLF4J`](https://www.slf4j.org/) as an abstraction layer for diverse logging frameworks.

pom.xml

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

77
<groupId>io.github.binance</groupId>
88
<artifactId>binance-connector-java</artifactId>
9-
<version>3.0.0rc1</version>
9+
<version>3.0.0rc2</version>
1010
<packaging>jar</packaging>
1111
<name>${project.groupId}:${project.artifactId}</name>
1212
<description>lightweight connector to API</description>
@@ -64,6 +64,7 @@
6464
</configuration>
6565
<executions>
6666
<execution>
67+
<?m2e execute onConfiguration,onIncremental?>
6768
<id>validate</id>
6869
<phase>validate</phase>
6970
<goals>

src/main/java/com/binance/connector/client/WebSocketApiClient.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@
55
import com.binance.connector.client.impl.websocketapi.WebSocketApiMarket;
66
import com.binance.connector.client.impl.websocketapi.WebSocketApiTrade;
77
import com.binance.connector.client.impl.websocketapi.WebSocketApiUserDataStream;
8-
import com.binance.connector.client.utils.WebSocketCallback;
8+
import com.binance.connector.client.utils.websocketcallback.WebSocketClosedCallback;
9+
import com.binance.connector.client.utils.websocketcallback.WebSocketClosingCallback;
10+
import com.binance.connector.client.utils.websocketcallback.WebSocketFailureCallback;
11+
import com.binance.connector.client.utils.websocketcallback.WebSocketMessageCallback;
12+
import com.binance.connector.client.utils.websocketcallback.WebSocketOpenCallback;
913

1014
public interface WebSocketApiClient {
11-
void connect(WebSocketCallback onMessageCallback);
12-
void connect(WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
15+
void connect(WebSocketMessageCallback onMessageCallback);
16+
void connect(WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
1317
void close();
1418
WebSocketApiGeneral general();
1519
WebSocketApiMarket market();

src/main/java/com/binance/connector/client/WebSocketStreamClient.java

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,43 @@
22

33
import java.util.ArrayList;
44

5-
import com.binance.connector.client.utils.WebSocketCallback;
5+
import com.binance.connector.client.utils.websocketcallback.WebSocketClosedCallback;
6+
import com.binance.connector.client.utils.websocketcallback.WebSocketClosingCallback;
7+
import com.binance.connector.client.utils.websocketcallback.WebSocketFailureCallback;
8+
import com.binance.connector.client.utils.websocketcallback.WebSocketMessageCallback;
9+
import com.binance.connector.client.utils.websocketcallback.WebSocketOpenCallback;
610

711
public interface WebSocketStreamClient {
8-
int aggTradeStream(String symbol, WebSocketCallback callback);
9-
int aggTradeStream(String symbol, WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
10-
int tradeStream(String symbol, WebSocketCallback callback);
11-
int tradeStream(String symbol, WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
12-
int klineStream(String symbol, String interval, WebSocketCallback callback);
13-
int klineStream(String symbol, String interval, WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
14-
int miniTickerStream(String symbol, WebSocketCallback callback);
15-
int miniTickerStream(String symbol, WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
16-
int allMiniTickerStream(WebSocketCallback callback);
17-
int allMiniTickerStream(WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
18-
int symbolTicker(String symbol, WebSocketCallback callback);
19-
int symbolTicker(String symbol, WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
20-
int allTickerStream(WebSocketCallback callback);
21-
int allTickerStream(WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
22-
int rollingWindowTicker(String symbol, String windowSize, WebSocketCallback callback);
23-
int rollingWindowTicker(String symbol, String windowSize, WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
24-
int allRollingWindowTicker(String windowSize, WebSocketCallback callback);
25-
int allRollingWindowTicker(String windowSize, WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
26-
int bookTicker(String symbol, WebSocketCallback callback);
27-
int bookTicker(String symbol, WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
28-
int partialDepthStream(String symbol, int levels, int speed, WebSocketCallback callback);
29-
int partialDepthStream(String symbol, int levels, int speed, WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
30-
int diffDepthStream(String symbol, int speed, WebSocketCallback callback);
31-
int diffDepthStream(String symbol, int speed, WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
32-
int listenUserStream(String listenKey, WebSocketCallback callback);
33-
int listenUserStream(String listenKey, WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
34-
int combineStreams(ArrayList<String> streams, WebSocketCallback callback);
35-
int combineStreams(ArrayList<String> streams, WebSocketCallback onOpenCallback, WebSocketCallback onMessageCallback, WebSocketCallback onClosingCallback, WebSocketCallback onFailureCallback);
12+
int aggTradeStream(String symbol, WebSocketMessageCallback callback);
13+
int aggTradeStream(String symbol, WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
14+
int tradeStream(String symbol, WebSocketMessageCallback callback);
15+
int tradeStream(String symbol, WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
16+
int klineStream(String symbol, String interval, WebSocketMessageCallback callback);
17+
int klineStream(String symbol, String interval, WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
18+
int miniTickerStream(String symbol, WebSocketMessageCallback callback);
19+
int miniTickerStream(String symbol, WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
20+
int allMiniTickerStream(WebSocketMessageCallback callback);
21+
int allMiniTickerStream(WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
22+
int symbolTicker(String symbol, WebSocketMessageCallback callback);
23+
int symbolTicker(String symbol, WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
24+
int allTickerStream(WebSocketMessageCallback callback);
25+
int allTickerStream(WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
26+
int rollingWindowTicker(String symbol, String windowSize, WebSocketMessageCallback callback);
27+
int rollingWindowTicker(String symbol, String windowSize, WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
28+
int allRollingWindowTicker(String windowSize, WebSocketMessageCallback callback);
29+
int allRollingWindowTicker(String windowSize, WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
30+
int bookTicker(String symbol, WebSocketMessageCallback callback);
31+
int bookTicker(String symbol, WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
32+
int allBookTickerStream(WebSocketMessageCallback callback);
33+
int allBookTickerStream(WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
34+
int partialDepthStream(String symbol, int levels, int speed, WebSocketMessageCallback callback);
35+
int partialDepthStream(String symbol, int levels, int speed, WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
36+
int diffDepthStream(String symbol, int speed, WebSocketMessageCallback callback);
37+
int diffDepthStream(String symbol, int speed, WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
38+
int listenUserStream(String listenKey, WebSocketMessageCallback callback);
39+
int listenUserStream(String listenKey, WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
40+
int combineStreams(ArrayList<String> streams, WebSocketMessageCallback callback);
41+
int combineStreams(ArrayList<String> streams, WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback);
3642
void closeConnection(int streamId);
3743
void closeAllConnections();
3844
}

src/main/java/com/binance/connector/client/enums/DefaultUrls.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ public final class DefaultUrls {
44
public static final String PROD_URL = "https://api.binance.com";
55
public static final String WS_URL = "wss://stream.binance.com:9443";
66
public static final String WS_API_URL = "wss://ws-api.binance.com:443/ws-api/v3";
7-
public static final String TESTNET_WS_API_URL = "wss://testnet.binance.vision/ws-api/v3";
87
public static final String TESTNET_URL = "https://testnet.binance.vision";
9-
public static final String TESTNET_WSS_URL = "wss://testnet.binance.vision";
10-
8+
public static final String TESTNET_WS_URL = "wss://testnet.binance.vision";
9+
public static final String TESTNET_WS_API_URL = "wss://testnet.binance.vision/ws-api/v3";
10+
public static final String MARKET_URL = "https://data-api.binance.vision";
11+
public static final String MARKET_WS_URL = "wss://data-stream.binance.vision";
1112
private DefaultUrls() {
1213
}
1314
}

0 commit comments

Comments
 (0)