diff --git a/pom.xml b/pom.xml
index 76e35d7..ac92724 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.binance.dex.api
binance-dex-api-client
- 1.1.1
+ 1.1.2
2.6.0
diff --git a/src/main/java/com/binance/dex/api/client/BinanceDexApiClientFactory.java b/src/main/java/com/binance/dex/api/client/BinanceDexApiClientFactory.java
index f503b55..20002c1 100644
--- a/src/main/java/com/binance/dex/api/client/BinanceDexApiClientFactory.java
+++ b/src/main/java/com/binance/dex/api/client/BinanceDexApiClientFactory.java
@@ -21,8 +21,12 @@ public BinanceDexApiRestClient newRestClient(String baseUrl) {
return new BinanceDexApiRestClientImpl(baseUrl);
}
- public BinanceDexApiRestClient newRestClient(String baseUrl,String apiKey){
- return new BinanceDexApiRestClientImpl(baseUrl,apiKey);
+ public BinanceDexApiRestClient newRestClient(String baseUrl, String apiKey) {
+ return new BinanceDexApiRestClientImpl(baseUrl, apiKey);
+ }
+
+ public BinanceDexApiRestClient newRestClient(String baseUrl, String apiKey, Long timeout) {
+ return new BinanceDexApiRestClientImpl(baseUrl, apiKey, timeout);
}
public BinanceDexApiNodeClient newNodeRpcClient() {
@@ -33,6 +37,10 @@ public BinanceDexApiNodeClient newNodeRpcClient(String baseUrl, String hrp, Stri
return new BinanceDexApiNodeClientImpl(baseUrl, hrp, valHrp);
}
+ public BinanceDexApiNodeClient newNodeRpcClient(String baseUrl, String hrp, String valHrp, Long timeout) {
+ return new BinanceDexApiNodeClientImpl(baseUrl, hrp, valHrp, timeout);
+ }
+
public BinanceDexApiAsyncRestClient newAsyncRestClient() {
return newAsyncRestClient(BinanceDexEnvironment.PROD.getBaseUrl());
}
@@ -41,8 +49,8 @@ public BinanceDexApiAsyncRestClient newAsyncRestClient(String baseUrl) {
return new BinanceDexApiAsyncRestClientImpl(baseUrl);
}
- public BinanceDexApiAsyncRestClient newAsyncRestClient(String baseUrl,String apiKey) {
- return new BinanceDexApiAsyncRestClientImpl(baseUrl,apiKey);
+ public BinanceDexApiAsyncRestClient newAsyncRestClient(String baseUrl, String apiKey) {
+ return new BinanceDexApiAsyncRestClientImpl(baseUrl, apiKey);
}
public BinanceDexApiWebSocketClient newWebSocketClient() {
@@ -53,8 +61,8 @@ public BinanceDexApiWebSocketClient newWebSocketClient(String baseUrl) {
return new BinanceDexApiWebSocketClientImpl(baseUrl);
}
- public BinanceDexApiWebSocketClient newWebSocketClient(String baseUrl,String apiKey) {
- return new BinanceDexApiWebSocketClientImpl(baseUrl,apiKey);
+ public BinanceDexApiWebSocketClient newWebSocketClient(String baseUrl, String apiKey) {
+ return new BinanceDexApiWebSocketClientImpl(baseUrl, apiKey);
}
}
diff --git a/src/main/java/com/binance/dex/api/client/BinanceDexApiClientGenerator.java b/src/main/java/com/binance/dex/api/client/BinanceDexApiClientGenerator.java
index 87de40a..964b6a9 100644
--- a/src/main/java/com/binance/dex/api/client/BinanceDexApiClientGenerator.java
+++ b/src/main/java/com/binance/dex/api/client/BinanceDexApiClientGenerator.java
@@ -28,42 +28,48 @@ public class BinanceDexApiClientGenerator {
BinanceDexApiError.class, new Annotation[0], null);
private static OkHttpClient sharedClient;
+
static {
Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequestsPerHost(500);
dispatcher.setMaxRequests(500);
sharedClient = new OkHttpClient.Builder()
- .dispatcher(dispatcher)
- .pingInterval(20, TimeUnit.SECONDS)
- .build();
+ .dispatcher(dispatcher)
+ .pingInterval(20, TimeUnit.SECONDS)
+ .retryOnConnectionFailure(false)
+ .build();
}
- public static S createService(Class serviceClass, String baseUrl) {
- Retrofit.Builder retrofitBuilder = new Retrofit.Builder()
- .baseUrl(baseUrl)
- .addConverterFactory(converterFactory);
-
- retrofitBuilder.client(sharedClient);
- Retrofit retrofit = retrofitBuilder.build();
+ public static S createService(Class serviceClass, String baseUrl) {
+ return createService(serviceClass, null, baseUrl);
+ }
- return retrofit.create(serviceClass);
+ public static S createService(Class serviceClass, String baseUrl, Long timeout) {
+ return createService(serviceClass, null, baseUrl, timeout);
}
public static S createService(Class serviceClass, String apiKey, String baseUrl) {
+ return createService(serviceClass, apiKey, baseUrl, null);
+ }
+
+ public static S createService(Class serviceClass, String apiKey, String baseUrl, Long timeout) {
Retrofit.Builder retrofitBuilder = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(converterFactory);
- if (StringUtils.isEmpty(apiKey)) {
- retrofitBuilder.client(sharedClient);
- } else {
+ OkHttpClient.Builder adaptedClientBuilder = sharedClient.newBuilder();
+ if (!StringUtils.isEmpty(apiKey)) {
// `adaptedClient` will use its own interceptor, but share thread pool etc with the 'parent' client
InternalInvokeInterceptor interceptor = new InternalInvokeInterceptor(apiKey);
- OkHttpClient adaptedClient = sharedClient.newBuilder().addInterceptor(interceptor).build();
- retrofitBuilder.client(adaptedClient);
+ adaptedClientBuilder.addInterceptor(interceptor);
+ }
+
+ if (timeout != null) {
+ adaptedClientBuilder.readTimeout(timeout, TimeUnit.SECONDS);
}
+ retrofitBuilder.client(adaptedClientBuilder.build());
Retrofit retrofit = retrofitBuilder.build();
return retrofit.create(serviceClass);
}
diff --git a/src/main/java/com/binance/dex/api/client/domain/jsonrpc/CommitBroadcastResult.java b/src/main/java/com/binance/dex/api/client/domain/jsonrpc/CommitBroadcastResult.java
index 963608b..5ad7f7b 100644
--- a/src/main/java/com/binance/dex/api/client/domain/jsonrpc/CommitBroadcastResult.java
+++ b/src/main/java/com/binance/dex/api/client/domain/jsonrpc/CommitBroadcastResult.java
@@ -13,6 +13,9 @@ public class CommitBroadcastResult {
@JsonProperty("check_tx")
private CheckTx checkTx;
+ @JsonProperty("deliver_tx")
+ private DeliverTx deliverTx;
+
@JsonIgnoreProperties(ignoreUnknown = true)
public static class CheckTx {
@@ -37,6 +40,30 @@ public void setLog(String log) {
}
}
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ public static class DeliverTx {
+
+ private Integer code = 0;
+
+ private String log;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getLog() {
+ return log;
+ }
+
+ public void setLog(String log) {
+ this.log = log;
+ }
+ }
+
public CheckTx getCheckTx() {
return checkTx;
}
@@ -45,6 +72,14 @@ public void setCheckTx(CheckTx checkTx) {
this.checkTx = checkTx;
}
+ public DeliverTx getDeliverTx() {
+ return deliverTx;
+ }
+
+ public void setDeliverTx(DeliverTx deliverTx) {
+ this.deliverTx = deliverTx;
+ }
+
public String getHash() {
return hash;
}
@@ -60,4 +95,6 @@ public Long getHeight() {
public void setHeight(Long height) {
this.height = height;
}
+
+
}
diff --git a/src/main/java/com/binance/dex/api/client/impl/BinanceDexApiNodeClientImpl.java b/src/main/java/com/binance/dex/api/client/impl/BinanceDexApiNodeClientImpl.java
index e2312f4..31e605d 100644
--- a/src/main/java/com/binance/dex/api/client/impl/BinanceDexApiNodeClientImpl.java
+++ b/src/main/java/com/binance/dex/api/client/impl/BinanceDexApiNodeClientImpl.java
@@ -72,6 +72,19 @@ public BinanceDexApiNodeClientImpl(String nodeUrl, String hrp, String valHrp) {
oracleQueryDelegate = new NodeQueryDelegateOracle(binanceDexNodeApi, hrp, valHrp);
}
+ public BinanceDexApiNodeClientImpl(String nodeUrl, String hrp, String valHrp, Long timeout) {
+ this.binanceDexNodeApi = BinanceDexApiClientGenerator.createService(BinanceDexNodeApi.class, nodeUrl, timeout);
+ this.hrp = hrp;
+ this.valHrp = valHrp;
+ transactionConverter = new TransactionConverter(hrp, valHrp);
+ feeConverter = new FeeConverter();
+
+ sideChainStakingTxDelegate = new NodeTxDelegateSideChainStaking(binanceDexNodeApi, hrp, valHrp);
+ bridgeTxDelegate = new NodeTxDelegateBridge(binanceDexNodeApi, hrp, valHrp);
+ sideChainQueryDelegate = new NodeQueryDelegateSideChainStaking(binanceDexNodeApi, hrp, valHrp);
+ oracleQueryDelegate = new NodeQueryDelegateOracle(binanceDexNodeApi, hrp, valHrp);
+ }
+
@Override
public AccountSequence getAccountSequence(String address) {
Account account = this.getAccount(address);
@@ -655,18 +668,24 @@ protected com.binance.dex.api.client.domain.MiniToken convert(MiniTokenInfo toke
protected List syncBroadcast(String requestBody, Wallet wallet) {
try {
JsonRpcResponse rpcResponse = BinanceDexApiClientGenerator.executeSync(binanceDexNodeApi.commitBroadcast(requestBody));
+ if (rpcResponse.getResult() == null){
+ if (rpcResponse.getError() != null){
+ throw new BinanceDexApiException(rpcResponse.getError().getCode(), rpcResponse.getError().getData());
+ }
+ throw new BinanceDexApiException(new RuntimeException("internal error"));
+ }
CommitBroadcastResult commitBroadcastResult = rpcResponse.getResult();
TransactionMetadata transactionMetadata = new TransactionMetadata();
- transactionMetadata.setCode(commitBroadcastResult.getCheckTx().getCode());
+ transactionMetadata.setCode(commitBroadcastResult.getDeliverTx().getCode());
if (commitBroadcastResult.getHeight() != null && StringUtils.isNoneBlank(commitBroadcastResult.getHash()) && transactionMetadata.getCode() == 0) {
wallet.increaseAccountSequence();
transactionMetadata.setHash(commitBroadcastResult.getHash());
transactionMetadata.setHeight(commitBroadcastResult.getHeight());
- transactionMetadata.setLog(commitBroadcastResult.getCheckTx().getLog());
+ transactionMetadata.setLog(commitBroadcastResult.getDeliverTx().getLog());
transactionMetadata.setOk(true);
} else {
wallet.invalidAccountSequence();
- transactionMetadata.setLog(commitBroadcastResult.getCheckTx().getLog());
+ transactionMetadata.setLog(commitBroadcastResult.getDeliverTx().getLog());
transactionMetadata.setOk(false);
}
@@ -680,16 +699,22 @@ protected List syncBroadcast(String requestBody, Wallet wal
protected List syncBroadcast(String requestBody) {
try {
JsonRpcResponse rpcResponse = BinanceDexApiClientGenerator.executeSync(binanceDexNodeApi.commitBroadcast(requestBody));
+ if (rpcResponse.getResult() == null){
+ if (rpcResponse.getError() != null){
+ throw new BinanceDexApiException(rpcResponse.getError().getCode(), rpcResponse.getError().getData());
+ }
+ throw new BinanceDexApiException(new RuntimeException("internal error"));
+ }
CommitBroadcastResult commitBroadcastResult = rpcResponse.getResult();
TransactionMetadata transactionMetadata = new TransactionMetadata();
- transactionMetadata.setCode(commitBroadcastResult.getCheckTx().getCode());
+ transactionMetadata.setCode(commitBroadcastResult.getDeliverTx().getCode());
if (commitBroadcastResult.getHeight() != null && StringUtils.isNoneBlank(commitBroadcastResult.getHash()) && transactionMetadata.getCode() == 0) {
transactionMetadata.setHash(commitBroadcastResult.getHash());
transactionMetadata.setHeight(commitBroadcastResult.getHeight());
- transactionMetadata.setLog(commitBroadcastResult.getCheckTx().getLog());
+ transactionMetadata.setLog(commitBroadcastResult.getDeliverTx().getLog());
transactionMetadata.setOk(true);
} else {
- transactionMetadata.setLog(commitBroadcastResult.getCheckTx().getLog());
+ transactionMetadata.setLog(commitBroadcastResult.getDeliverTx().getLog());
transactionMetadata.setOk(false);
}
diff --git a/src/main/java/com/binance/dex/api/client/impl/BinanceDexApiRestClientImpl.java b/src/main/java/com/binance/dex/api/client/impl/BinanceDexApiRestClientImpl.java
index b090354..8b38990 100644
--- a/src/main/java/com/binance/dex/api/client/impl/BinanceDexApiRestClientImpl.java
+++ b/src/main/java/com/binance/dex/api/client/impl/BinanceDexApiRestClientImpl.java
@@ -28,6 +28,10 @@ public BinanceDexApiRestClientImpl(String baseUrl) {
this.binanceDexApi = BinanceDexApiClientGenerator.createService(BinanceDexApi.class, baseUrl);
}
+ public BinanceDexApiRestClientImpl(String baseUrl, Long timeout) {
+ this.binanceDexApi = BinanceDexApiClientGenerator.createService(BinanceDexApi.class, baseUrl, timeout);
+ }
+
public BinanceDexApiRestClientImpl(String baseUrl,String apiKey){
if(StringUtils.isBlank(apiKey)){
this.binanceDexApi = BinanceDexApiClientGenerator.createService(BinanceDexApi.class, baseUrl);
@@ -36,6 +40,14 @@ public BinanceDexApiRestClientImpl(String baseUrl,String apiKey){
}
}
+ public BinanceDexApiRestClientImpl(String baseUrl,String apiKey, Long timeout){
+ if(StringUtils.isBlank(apiKey)){
+ this.binanceDexApi = BinanceDexApiClientGenerator.createService(BinanceDexApi.class, baseUrl, timeout);
+ }else{
+ this.binanceDexApi = BinanceDexApiClientGenerator.createService(BinanceDexApi.class,apiKey,baseUrl + "/internal/", timeout);
+ }
+ }
+
public Time getTime() {
return BinanceDexApiClientGenerator.executeSync(binanceDexApi.getTime());
}
diff --git a/src/main/java/com/binance/dex/api/client/impl/node/NodeTx.java b/src/main/java/com/binance/dex/api/client/impl/node/NodeTx.java
index 3daa362..baeb2fd 100644
--- a/src/main/java/com/binance/dex/api/client/impl/node/NodeTx.java
+++ b/src/main/java/com/binance/dex/api/client/impl/node/NodeTx.java
@@ -49,18 +49,24 @@ protected List broadcast(BinanceDexTransactionMessage messa
protected List syncBroadcast(String requestBody, Wallet wallet) {
try {
JsonRpcResponse rpcResponse = BinanceDexApiClientGenerator.executeSync(binanceDexNodeApi.commitBroadcast(requestBody));
+ if (rpcResponse.getResult() == null){
+ if (rpcResponse.getError() != null){
+ throw new BinanceDexApiException(rpcResponse.getError().getCode(), rpcResponse.getError().getData());
+ }
+ throw new BinanceDexApiException(new RuntimeException("internal error"));
+ }
CommitBroadcastResult commitBroadcastResult = rpcResponse.getResult();
TransactionMetadata transactionMetadata = new TransactionMetadata();
- transactionMetadata.setCode(commitBroadcastResult.getCheckTx().getCode());
+ transactionMetadata.setCode(commitBroadcastResult.getDeliverTx().getCode());
if (commitBroadcastResult.getHeight() != null && StringUtils.isNoneBlank(commitBroadcastResult.getHash()) && transactionMetadata.getCode() == 0) {
wallet.increaseAccountSequence();
transactionMetadata.setHash(commitBroadcastResult.getHash());
transactionMetadata.setHeight(commitBroadcastResult.getHeight());
- transactionMetadata.setLog(commitBroadcastResult.getCheckTx().getLog());
+ transactionMetadata.setLog(commitBroadcastResult.getDeliverTx().getLog());
transactionMetadata.setOk(true);
} else {
wallet.invalidAccountSequence();
- transactionMetadata.setLog(commitBroadcastResult.getCheckTx().getLog());
+ transactionMetadata.setLog(commitBroadcastResult.getDeliverTx().getLog());
transactionMetadata.setOk(false);
}
@@ -74,16 +80,22 @@ protected List syncBroadcast(String requestBody, Wallet wal
protected List syncBroadcast(String requestBody) {
try {
JsonRpcResponse rpcResponse = BinanceDexApiClientGenerator.executeSync(binanceDexNodeApi.commitBroadcast(requestBody));
+ if (rpcResponse.getResult() == null){
+ if (rpcResponse.getError() != null){
+ throw new BinanceDexApiException(rpcResponse.getError().getCode(), rpcResponse.getError().getData());
+ }
+ throw new BinanceDexApiException(new RuntimeException("internal error"));
+ }
CommitBroadcastResult commitBroadcastResult = rpcResponse.getResult();
TransactionMetadata transactionMetadata = new TransactionMetadata();
- transactionMetadata.setCode(commitBroadcastResult.getCheckTx().getCode());
+ transactionMetadata.setCode(commitBroadcastResult.getDeliverTx().getCode());
if (commitBroadcastResult.getHeight() != null && StringUtils.isNoneBlank(commitBroadcastResult.getHash()) && transactionMetadata.getCode() == 0) {
transactionMetadata.setHash(commitBroadcastResult.getHash());
transactionMetadata.setHeight(commitBroadcastResult.getHeight());
- transactionMetadata.setLog(commitBroadcastResult.getCheckTx().getLog());
+ transactionMetadata.setLog(commitBroadcastResult.getDeliverTx().getLog());
transactionMetadata.setOk(true);
} else {
- transactionMetadata.setLog(commitBroadcastResult.getCheckTx().getLog());
+ transactionMetadata.setLog(commitBroadcastResult.getDeliverTx().getLog());
transactionMetadata.setOk(false);
}