Skip to content

Commit c523b68

Browse files
committed
feat: add constructors that take http clients
1 parent 23678f3 commit c523b68

File tree

3 files changed

+38
-16
lines changed

3 files changed

+38
-16
lines changed

src/main/java/com/cryptomarket/sdk/rest/CryptomarketRestClient.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,25 @@
44
import java.util.List;
55
import java.util.Map;
66

7+
import org.jetbrains.annotations.Nullable;
8+
79
import com.cryptomarket.params.AccountType;
810
import com.cryptomarket.params.ContingencyType;
9-
import com.cryptomarket.params.SortBy;
10-
import com.cryptomarket.params.SubAccountStatus;
11+
import com.cryptomarket.params.IdentifyBy;
12+
import com.cryptomarket.params.OrderBuilder;
1113
import com.cryptomarket.params.OrderType;
1214
import com.cryptomarket.params.ParamsBuilder;
1315
import com.cryptomarket.params.Period;
1416
import com.cryptomarket.params.Side;
1517
import com.cryptomarket.params.Sort;
18+
import com.cryptomarket.params.SortBy;
19+
import com.cryptomarket.params.SubAccountTransferType;
1620
import com.cryptomarket.params.TimeInForce;
1721
import com.cryptomarket.params.TransactionStatus;
1822
import com.cryptomarket.params.TransactionSubtype;
1923
import com.cryptomarket.params.TransactionType;
20-
import com.cryptomarket.params.SubAccountTransferType;
21-
import com.cryptomarket.params.IdentifyBy;
22-
import com.cryptomarket.params.OrderBuilder;
2324
import com.cryptomarket.params.UseOffchain;
2425
import com.cryptomarket.sdk.exceptions.CryptomarketSDKException;
25-
import com.cryptomarket.sdk.models.SubAccountSettings;
2626
import com.cryptomarket.sdk.models.Address;
2727
import com.cryptomarket.sdk.models.AmountLock;
2828
import com.cryptomarket.sdk.models.Balance;
@@ -36,14 +36,13 @@
3636
import com.cryptomarket.sdk.models.PublicTrade;
3737
import com.cryptomarket.sdk.models.SubAccount;
3838
import com.cryptomarket.sdk.models.SubAccountBalances;
39+
import com.cryptomarket.sdk.models.SubAccountSettings;
3940
import com.cryptomarket.sdk.models.Symbol;
4041
import com.cryptomarket.sdk.models.Ticker;
4142
import com.cryptomarket.sdk.models.TickerPrice;
4243
import com.cryptomarket.sdk.models.Trade;
4344
import com.cryptomarket.sdk.models.Transaction;
4445

45-
import org.jetbrains.annotations.Nullable;
46-
4746
/**
4847
* Rest Client Interface for cryptomarket API V3.
4948
*/

src/main/java/com/cryptomarket/sdk/rest/CryptomarketRestClientImpl.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,23 @@
55
import java.util.List;
66
import java.util.Map;
77

8+
import org.apache.http.impl.client.HttpClients;
9+
810
import com.cryptomarket.params.AccountType;
911
import com.cryptomarket.params.ContingencyType;
10-
import com.cryptomarket.params.SortBy;
11-
import com.cryptomarket.params.SubAccountStatus;
12+
import com.cryptomarket.params.IdentifyBy;
13+
import com.cryptomarket.params.OrderBuilder;
1214
import com.cryptomarket.params.OrderType;
1315
import com.cryptomarket.params.ParamsBuilder;
1416
import com.cryptomarket.params.Period;
1517
import com.cryptomarket.params.Side;
1618
import com.cryptomarket.params.Sort;
19+
import com.cryptomarket.params.SortBy;
20+
import com.cryptomarket.params.SubAccountTransferType;
1721
import com.cryptomarket.params.TimeInForce;
1822
import com.cryptomarket.params.TransactionStatus;
1923
import com.cryptomarket.params.TransactionSubtype;
2024
import com.cryptomarket.params.TransactionType;
21-
import com.cryptomarket.params.SubAccountTransferType;
22-
import com.cryptomarket.params.IdentifyBy;
23-
import com.cryptomarket.params.OrderBuilder;
2425
import com.cryptomarket.params.UseOffchain;
2526
import com.cryptomarket.sdk.Adapter;
2627
import com.cryptomarket.sdk.ArgNames;
@@ -52,15 +53,24 @@ public class CryptomarketRestClientImpl implements CryptomarketRestClient {
5253
Adapter adapter = new Adapter();
5354

5455
public CryptomarketRestClientImpl(String apiKey, String apiSecret) {
56+
this(apiKey, apiSecret, HttpClients.createDefault());
57+
}
58+
59+
public CryptomarketRestClientImpl(String apiKey, String apiSecret,
60+
org.apache.http.impl.client.CloseableHttpClient client) {
5561
String url = "https://api.exchange.cryptomkt.com";
5662
String apiVersion = "/api/3/";
57-
httpClient = new HttpClientImpl(url, apiVersion, apiKey, apiSecret);
63+
httpClient = new HttpClientImpl(client, url, apiVersion, apiKey, apiSecret);
5864
}
5965

6066
public CryptomarketRestClientImpl() {
6167
this("", "");
6268
}
6369

70+
public CryptomarketRestClientImpl(org.apache.http.impl.client.CloseableHttpClient client) {
71+
this("", "", client);
72+
}
73+
6474
// PUBLIC
6575

6676
@Override

src/main/java/com/cryptomarket/sdk/rest/HttpClientImpl.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,9 @@ public class HttpClientImpl implements CloseableHttpClient {
4949
private final JsonAdapter<ErrorResponse> errorJsonAdapter = moshi.adapter(ErrorResponse.class);
5050
private final ParameterizedType mapStringString = Types.newParameterizedType(Map.class, String.class, String.class);
5151
private final JsonAdapter<Map<String, String>> mapStrStrJsonAdapter = moshi.adapter(mapStringString);
52-
org.apache.http.impl.client.CloseableHttpClient client = HttpClients.createDefault();
52+
private final org.apache.http.impl.client.CloseableHttpClient client;
5353
private HMAC hmac;
5454

55-
5655
class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase {
5756
public static final String METHOD_NAME = "DELETE";
5857

@@ -79,7 +78,21 @@ public HttpClientImpl(String url, String apiVersion, String apiKey, String apiSe
7978
this(url, apiVersion, apiKey, apiSecret, 0);
8079
}
8180

81+
public HttpClientImpl(org.apache.http.impl.client.CloseableHttpClient client, String url, String apiVersion,
82+
String apiKey, String apiSecret) {
83+
this(client, url, apiVersion, apiKey, apiSecret, 0);
84+
}
85+
8286
public HttpClientImpl(String url, String apiVersion, String apiKey, String apiSecret, Integer window) {
87+
this.client = HttpClients.createDefault();
88+
this.hmac = new HMAC(apiKey, apiSecret, window);
89+
this.url = url;
90+
this.apiVersion = apiVersion;
91+
}
92+
93+
public HttpClientImpl(org.apache.http.impl.client.CloseableHttpClient client, String url, String apiVersion,
94+
String apiKey, String apiSecret, Integer window) {
95+
this.client = client;
8396
this.hmac = new HMAC(apiKey, apiSecret, window);
8497
this.url = url;
8598
this.apiVersion = apiVersion;

0 commit comments

Comments
 (0)