Skip to content
This repository was archived by the owner on Oct 30, 2023. It is now read-only.

Commit 00aa240

Browse files
committed
Implemented BinanceApiSwapAsyncRestClientImpl
1 parent c1ab5a4 commit 00aa240

4 files changed

Lines changed: 196 additions & 4 deletions

File tree

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package com.binance.api.client.api.async;
2+
3+
import com.binance.api.client.api.BinanceApiCallback;
4+
import com.binance.api.client.domain.SwapRemoveType;
5+
import com.binance.api.client.domain.account.*;
6+
7+
import java.util.List;
8+
9+
/**
10+
* Binance API facade, supporting asynchronous/non-blocking access Binance's REST API.
11+
*/
12+
public interface BinanceApiSwapAsyncRestClient {
13+
14+
/**
15+
* Get metadata about all swap pools.
16+
*
17+
* @return
18+
*/
19+
void listAllSwapPools(BinanceApiCallback<List<Pool>> callback);
20+
21+
/**
22+
* Get liquidity information and user share of a pool.
23+
*
24+
* @param poolId
25+
* @return
26+
*/
27+
void getPoolLiquidityInfo(String poolId, BinanceApiCallback<Liquidity> callback);
28+
29+
/**
30+
* Add liquidity to a pool.
31+
*
32+
* @param poolId
33+
* @param asset
34+
* @param quantity
35+
* @return
36+
*/
37+
void addLiquidity(String poolId,
38+
String asset,
39+
String quantity,
40+
BinanceApiCallback<LiquidityOperationRecord> callback);
41+
42+
/**
43+
* Remove liquidity from a pool, type include SINGLE and COMBINATION, asset is mandatory for single asset removal
44+
*
45+
* @param poolId
46+
* @param type
47+
* @param asset
48+
* @param shareAmount
49+
* @return
50+
*/
51+
void removeLiquidity(String poolId,
52+
SwapRemoveType type,
53+
List<String> asset,
54+
String shareAmount,
55+
BinanceApiCallback<LiquidityOperationRecord> callback);
56+
57+
/**
58+
* Get liquidity operation (add/remove) records of a pool
59+
*
60+
* @param poolId
61+
* @param limit
62+
* @return
63+
*/
64+
void getPoolLiquidityOperationRecords(String poolId,
65+
Integer limit,
66+
BinanceApiCallback<List<LiquidityOperationRecord>> callback);
67+
68+
/**
69+
* Get liquidity operation (add/remove) record.
70+
*
71+
* @param operationId
72+
* @return
73+
*/
74+
void getLiquidityOperationRecord(String operationId, BinanceApiCallback<LiquidityOperationRecord> callback);
75+
76+
/**
77+
* Request a quote for swap quote asset (selling asset) for base asset (buying asset), essentially price/exchange rates.
78+
*
79+
* @param quoteAsset
80+
* @param baseAsset
81+
* @param quoteQty
82+
* @return
83+
*/
84+
void requestQuote(String quoteAsset,
85+
String baseAsset,
86+
String quoteQty, BinanceApiCallback<SwapQuote> callback);
87+
88+
/**
89+
* Swap quoteAsset for baseAsset
90+
*
91+
* @param quoteAsset
92+
* @param baseAsset
93+
* @param quoteQty
94+
* @return
95+
*/
96+
void swap(String quoteAsset,
97+
String baseAsset,
98+
String quoteQty, BinanceApiCallback<SwapRecord> callback);
99+
100+
void getSwapHistory(String swapId, BinanceApiCallback<SwapHistory> callback);
101+
}

src/main/java/com/binance/api/client/factory/BinanceSwapApiClientFactory.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.binance.api.client.factory;
22

3+
import com.binance.api.client.api.async.BinanceApiSwapAsyncRestClient;
34
import com.binance.api.client.api.sync.BinanceApiSwapRestClient;
5+
import com.binance.api.client.impl.async.BinanceApiSwapAsyncRestClientImpl;
46
import com.binance.api.client.impl.sync.BinanceApiSwapRestClientImpl;
57

68
/**
79
* A factory for creating BinanceApi client objects.
810
*/
9-
public class BinanceSwapApiClientFactory<T> implements BinanceFactory<BinanceApiSwapRestClient, T> {
11+
public class BinanceSwapApiClientFactory implements BinanceFactory<BinanceApiSwapRestClient, BinanceApiSwapAsyncRestClient> {
1012

1113
/**
1214
* API Key
@@ -63,8 +65,7 @@ public BinanceApiSwapRestClient newRestClient() {
6365
/**
6466
* Creates a new asynchronous/non-blocking REST client.
6567
*/
66-
public T newAsyncRestClient() {
67-
//FIXME: not implemented yet ...
68-
return null;
68+
public BinanceApiSwapAsyncRestClient newAsyncRestClient() {
69+
return new BinanceApiSwapAsyncRestClientImpl(apiKey, secret, apiUrl);
6970
}
7071
}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package com.binance.api.client.impl.async;
2+
3+
import com.binance.api.client.api.BinanceApiCallback;
4+
import com.binance.api.client.api.async.BinanceApiSwapAsyncRestClient;
5+
import com.binance.api.client.constant.BinanceApiConstants;
6+
import com.binance.api.client.domain.SwapRemoveType;
7+
import com.binance.api.client.domain.account.*;
8+
import com.binance.api.client.impl.BinanceApiCallbackAdapter;
9+
import com.binance.api.client.impl.BinanceApiService;
10+
import com.binance.api.client.impl.BinanceApiServiceGenerator;
11+
12+
import java.util.List;
13+
14+
15+
/**
16+
* Implementation of Binance's REST API using Retrofit with asynchronous/non-blocking method calls.
17+
*/
18+
public class BinanceApiSwapAsyncRestClientImpl implements BinanceApiSwapAsyncRestClient {
19+
20+
private final BinanceApiService binanceApiService;
21+
22+
public BinanceApiSwapAsyncRestClientImpl(String apiKey, String secret, String apiUrl) {
23+
binanceApiService = BinanceApiServiceGenerator.createService(BinanceApiService.class, apiKey, secret, apiUrl);
24+
}
25+
26+
27+
@Override
28+
public void listAllSwapPools(BinanceApiCallback<List<Pool>> callback) {
29+
binanceApiService.listAllSwapPools().enqueue(new BinanceApiCallbackAdapter<>(callback));
30+
}
31+
32+
@Override
33+
public void getPoolLiquidityInfo(String poolId, BinanceApiCallback<Liquidity> callback) {
34+
//TODO: not implemented yet ...
35+
}
36+
37+
@Override
38+
public void addLiquidity(String poolId, String asset, String quantity, BinanceApiCallback<LiquidityOperationRecord> callback) {
39+
long timestamp = System.currentTimeMillis();
40+
binanceApiService.addLiquidity(poolId,
41+
asset,
42+
quantity,
43+
BinanceApiConstants.DEFAULT_RECEIVING_WINDOW,
44+
timestamp).enqueue(new BinanceApiCallbackAdapter<>(callback));
45+
}
46+
47+
@Override
48+
public void removeLiquidity(String poolId, SwapRemoveType type, List<String> assetList, String shareAmount, BinanceApiCallback<LiquidityOperationRecord> callback) {
49+
long timestamp = System.currentTimeMillis();
50+
binanceApiService.removeLiquidity(poolId,
51+
type,
52+
assetList,
53+
shareAmount,
54+
BinanceApiConstants.DEFAULT_RECEIVING_WINDOW,
55+
timestamp).enqueue(new BinanceApiCallbackAdapter<>(callback));
56+
57+
}
58+
59+
@Override
60+
public void getPoolLiquidityOperationRecords(String poolId, Integer limit, BinanceApiCallback<List<LiquidityOperationRecord>> callback) {
61+
long timestamp = System.currentTimeMillis();
62+
binanceApiService.getPoolLiquidityOperationRecords(poolId, limit, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, timestamp)
63+
.enqueue(new BinanceApiCallbackAdapter<>(callback));
64+
}
65+
66+
@Override
67+
public void getLiquidityOperationRecord(String operationId, BinanceApiCallback<LiquidityOperationRecord> callback) {
68+
long timestamp = System.currentTimeMillis();
69+
binanceApiService.getLiquidityOperationRecord(operationId, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, timestamp);
70+
}
71+
72+
@Override
73+
public void requestQuote(String quoteAsset, String baseAsset, String quoteQty, BinanceApiCallback<SwapQuote> callback) {
74+
long timestamp = System.currentTimeMillis();
75+
binanceApiService.requestQuote(quoteAsset, baseAsset, quoteQty, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, timestamp);
76+
}
77+
78+
@Override
79+
public void swap(String quoteAsset, String baseAsset, String quoteQty, BinanceApiCallback<SwapRecord> callback) {
80+
long timestamp = System.currentTimeMillis();
81+
binanceApiService.swap(quoteAsset, baseAsset, quoteQty, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, timestamp);
82+
}
83+
84+
@Override
85+
public void getSwapHistory(String swapId, BinanceApiCallback<SwapHistory> callback) {
86+
long timestamp = System.currentTimeMillis();
87+
binanceApiService.getSwapHistory(swapId, BinanceApiConstants.DEFAULT_RECEIVING_WINDOW, timestamp);
88+
}
89+
}

src/test/java/com/binance/api/examples/SwapEndpointExample.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.binance.api.examples;
22

3+
import com.binance.api.client.BinanceEngineType;
34
import com.binance.api.client.api.sync.BinanceApiSwapRestClient;
45
import com.binance.api.client.domain.account.*;
56
import com.binance.api.client.factory.BinanceAbstractFactory;

0 commit comments

Comments
 (0)