Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit d313c11

Browse files
authored
Merge pull request #34 from mirxak/master
depth level fix
2 parents 72e9977 + b7682f1 commit d313c11

4 files changed

Lines changed: 147 additions & 7 deletions

File tree

src/main/java/com/webcerebrium/binance/api/BinanceApi.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,7 @@
2929
import com.webcerebrium.binance.datatype.BinanceTicker;
3030
import com.webcerebrium.binance.datatype.BinanceTrade;
3131
import com.webcerebrium.binance.datatype.BinanceWalletAsset;
32-
import com.webcerebrium.binance.websocket.BinanceWebSocketAdapterAggTrades;
33-
import com.webcerebrium.binance.websocket.BinanceWebSocketAdapterDepth;
34-
import com.webcerebrium.binance.websocket.BinanceWebSocketAdapterKline;
35-
import com.webcerebrium.binance.websocket.BinanceWebSocketAdapterUserData;
32+
import com.webcerebrium.binance.websocket.*;
3633
import lombok.Data;
3734
import lombok.extern.slf4j.Slf4j;
3835
import org.eclipse.jetty.util.ssl.SslContextFactory;
@@ -679,7 +676,7 @@ public Session websocketDepth(BinanceSymbol symbol, BinanceWebSocketAdapterDepth
679676
* @return web socket session
680677
* @throws BinanceApiException in case of any error
681678
*/
682-
public Session websocketDepth20(BinanceSymbol symbol, BinanceWebSocketAdapterDepth adapter) throws BinanceApiException {
679+
public Session websocketDepth20(BinanceSymbol symbol, BinanceWebSocketAdapterDepthLevel adapter) throws BinanceApiException {
683680
return getWebsocketSession(symbol.toString().toLowerCase() + "@depth20", adapter);
684681
}
685682

@@ -690,7 +687,7 @@ public Session websocketDepth20(BinanceSymbol symbol, BinanceWebSocketAdapterDep
690687
* @return web socket session
691688
* @throws BinanceApiException in case of any error
692689
*/
693-
public Session websocketDepth10(BinanceSymbol symbol, BinanceWebSocketAdapterDepth adapter) throws BinanceApiException {
690+
public Session websocketDepth10(BinanceSymbol symbol, BinanceWebSocketAdapterDepthLevel adapter) throws BinanceApiException {
694691
return getWebsocketSession(symbol.toString().toLowerCase() + "@depth10", adapter);
695692
}
696693

@@ -701,7 +698,7 @@ public Session websocketDepth10(BinanceSymbol symbol, BinanceWebSocketAdapterDep
701698
* @return web socket session
702699
* @throws BinanceApiException in case of any error
703700
*/
704-
public Session websocketDepth5(BinanceSymbol symbol, BinanceWebSocketAdapterDepth adapter) throws BinanceApiException {
701+
public Session websocketDepth5(BinanceSymbol symbol, BinanceWebSocketAdapterDepthLevel adapter) throws BinanceApiException {
705702
return getWebsocketSession(symbol.toString().toLowerCase() + "@depth5", adapter);
706703
}
707704

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package com.webcerebrium.binance.datatype;
2+
3+
import com.google.gson.JsonArray;
4+
import com.google.gson.JsonElement;
5+
import com.google.gson.JsonObject;
6+
7+
import java.util.Iterator;
8+
import java.util.LinkedList;
9+
import java.util.List;
10+
11+
public class BinanceEventDepthLevelUpdate {
12+
13+
private Long lastUpdateId;
14+
public List<BinanceBidOrAsk> bids = null;
15+
public List<BinanceBidOrAsk> asks = null;
16+
17+
public BinanceEventDepthLevelUpdate(JsonObject event){
18+
this.lastUpdateId = event.get("lastUpdateId").getAsLong();
19+
this.bids = new LinkedList();
20+
JsonArray b = event.get("bids").getAsJsonArray();
21+
Iterator var3 = b.iterator();
22+
23+
while(var3.hasNext()) {
24+
JsonElement bidElement = (JsonElement)var3.next();
25+
this.bids.add(new BinanceBidOrAsk(BinanceBidType.BID, bidElement.getAsJsonArray()));
26+
}
27+
28+
this.asks = new LinkedList();
29+
JsonArray a = event.get("asks").getAsJsonArray();
30+
Iterator var7 = a.iterator();
31+
32+
while(var7.hasNext()) {
33+
JsonElement askElement = (JsonElement)var7.next();
34+
this.asks.add(new BinanceBidOrAsk(BinanceBidType.ASK, askElement.getAsJsonArray()));
35+
}
36+
}
37+
38+
public Long getLastUpdateId() {
39+
return lastUpdateId;
40+
}
41+
42+
public void setLastUpdateId(Long lastUpdateId) {
43+
this.lastUpdateId = lastUpdateId;
44+
}
45+
46+
public List<BinanceBidOrAsk> getBids() {
47+
return bids;
48+
}
49+
50+
public void setBids(List<BinanceBidOrAsk> bids) {
51+
this.bids = bids;
52+
}
53+
54+
public List<BinanceBidOrAsk> getAsks() {
55+
return asks;
56+
}
57+
58+
public void setAsks(List<BinanceBidOrAsk> asks) {
59+
this.asks = asks;
60+
}
61+
62+
@Override
63+
public boolean equals(Object o) {
64+
if (this == o) return true;
65+
if (o == null || getClass() != o.getClass()) return false;
66+
67+
BinanceEventDepthLevelUpdate that = (BinanceEventDepthLevelUpdate) o;
68+
69+
if (lastUpdateId != null ? !lastUpdateId.equals(that.lastUpdateId) : that.lastUpdateId != null) return false;
70+
if (bids != null ? !bids.equals(that.bids) : that.bids != null) return false;
71+
return asks != null ? asks.equals(that.asks) : that.asks == null;
72+
}
73+
74+
@Override
75+
public int hashCode() {
76+
int result = lastUpdateId != null ? lastUpdateId.hashCode() : 0;
77+
result = 31 * result + (bids != null ? bids.hashCode() : 0);
78+
result = 31 * result + (asks != null ? asks.hashCode() : 0);
79+
return result;
80+
}
81+
82+
@Override
83+
public String toString() {
84+
return "BinanceEventDepthLevelUpdate{" +
85+
"lastUpdateId=" + lastUpdateId +
86+
", bids=" + bids +
87+
", asks=" + asks +
88+
'}';
89+
}
90+
91+
92+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.webcerebrium.binance.websocket;
2+
3+
import com.google.gson.Gson;
4+
import com.google.gson.JsonObject;
5+
import com.webcerebrium.binance.api.BinanceApiException;
6+
import com.webcerebrium.binance.datatype.BinanceEventDepthLevelUpdate;
7+
import lombok.extern.slf4j.Slf4j;
8+
import org.eclipse.jetty.websocket.api.Session;
9+
import org.eclipse.jetty.websocket.api.WebSocketAdapter;
10+
11+
@Slf4j
12+
public abstract class BinanceWebSocketAdapterDepthLevel extends WebSocketAdapter {
13+
14+
@Override
15+
public void onWebSocketConnect(Session sess) {
16+
log.debug("onWebSocketConnect: {}", sess);
17+
}
18+
19+
@Override
20+
public void onWebSocketError(Throwable cause) {
21+
log.error("onWebSocketError: {}", cause);
22+
}
23+
24+
@Override
25+
public void onWebSocketText(String message) {
26+
log.debug("onWebSocketText message={}", message);
27+
JsonObject operation = (new Gson()).fromJson(message, JsonObject.class);
28+
try {
29+
onMessage(new BinanceEventDepthLevelUpdate(operation));
30+
} catch ( BinanceApiException e ) {
31+
log.error("Error in websocket message {}", e.getMessage());
32+
}
33+
}
34+
35+
public abstract void onMessage(BinanceEventDepthLevelUpdate event) throws BinanceApiException;
36+
37+
}

src/test/java/com/webcerebrium/binance/api/DepthStreamTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
* Released under the MIT License
99
* ============================================================ */
1010

11+
import com.webcerebrium.binance.datatype.BinanceEventDepthLevelUpdate;
1112
import com.webcerebrium.binance.datatype.BinanceEventDepthUpdate;
1213
import com.webcerebrium.binance.datatype.BinanceSymbol;
1314
import com.webcerebrium.binance.websocket.BinanceWebSocketAdapterDepth;
15+
import com.webcerebrium.binance.websocket.BinanceWebSocketAdapterDepthLevel;
1416
import lombok.extern.slf4j.Slf4j;
1517
import org.eclipse.jetty.websocket.api.Session;
1618
import org.junit.Before;
@@ -39,4 +41,16 @@ public void onMessage(BinanceEventDepthUpdate message) {
3941
Thread.sleep(3000);
4042
session.close();
4143
}
44+
45+
@Test
46+
public void testDepth5StreamWatcher() throws Exception, BinanceApiException {
47+
Session session = binanceApi.websocketDepth5(symbol, new BinanceWebSocketAdapterDepthLevel() {
48+
@Override
49+
public void onMessage(BinanceEventDepthLevelUpdate message) {
50+
log.info(message.toString());
51+
}
52+
});
53+
Thread.sleep(3000);
54+
session.close();
55+
}
4256
}

0 commit comments

Comments
 (0)