Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/main/java/com/binance/connector/client/SpotClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@
import com.binance.connector.client.impl.spot.Wallet;
import com.binance.connector.client.utils.ProxyAuth;

import java.util.function.Supplier;

public interface SpotClient {
void setShowLimitUsage(boolean showLimitUsage);
void setProxy(ProxyAuth proxy);
void unsetProxy();
void setTimeSupplier(Supplier<Long> timeSupplier);
AutoInvest createAutoInvest();
C2C createC2C();
Convert createConvert();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,12 @@
import com.binance.connector.client.impl.spot.VIPLoans;
import com.binance.connector.client.impl.spot.Wallet;
import com.binance.connector.client.utils.ProxyAuth;
import com.binance.connector.client.utils.TimeSupplier;
import com.binance.connector.client.utils.signaturegenerator.HmacSignatureGenerator;
import com.binance.connector.client.utils.signaturegenerator.SignatureGenerator;

import java.util.function.Supplier;

public class SpotClientImpl implements SpotClient {
private final String apiKey;
private final SignatureGenerator signatureGenerator;
Expand Down Expand Up @@ -70,6 +73,11 @@ public void setShowLimitUsage(boolean showLimitUsage) {
public void setProxy(ProxyAuth proxy) {
this.proxy = proxy;
}

@Override
public void setTimeSupplier(Supplier<Long> timeSupplier) {
TimeSupplier.INSTANCE.setTimeProvider(timeSupplier);
}

@Override
public void unsetProxy() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public String sendSignedRequest(String baseUrl, String urlPath, Map<String, Obje
}

parameters = (parameters == null) ? new HashMap<String, Object>() : parameters;
parameters.putIfAbsent("timestamp", UrlBuilder.buildTimestamp());
parameters.putIfAbsent("timestamp", TimeSupplier.INSTANCE.buildTimestamp());
parameters.put("signature", this.signatureGenerator.getSignature(UrlBuilder.joinQueryParameters(parameters)));

String fullUrl = UrlBuilder.buildFullUrl(baseUrl, urlPath, parameters);
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/com/binance/connector/client/utils/TimeSupplier.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.binance.connector.client.utils;

import java.util.function.Supplier;

public class TimeSupplier {

public static final TimeSupplier INSTANCE = new TimeSupplier();

private Supplier<Long> timeProvider;

public TimeSupplier() {
timeProvider = System::currentTimeMillis;
}

public void setTimeProvider(Supplier<Long> timeProvider) {
this.timeProvider = timeProvider;
}

public String buildTimestamp() {
return String.valueOf(timeProvider.get());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.binance.connector.client.utils.ParameterChecker;
import com.binance.connector.client.utils.UrlBuilder;
import com.binance.connector.client.utils.WebSocketConnection;
import com.binance.connector.client.utils.TimeSupplier;
import com.binance.connector.client.utils.signaturegenerator.SignatureGenerator;

import org.json.JSONObject;
Expand Down Expand Up @@ -60,7 +61,7 @@ public void request(RequestType requestType, String method, JSONObject parameter
ParameterChecker.checkParameterType(this.apiKey, String.class, "apiKey");
parameters = JSONParser.addKeyValue(parameters, "apiKey", this.apiKey);
if (!parameters.has("timestamp")) {
parameters.put("timestamp", UrlBuilder.buildTimestamp());
parameters.put("timestamp", TimeSupplier.INSTANCE.buildTimestamp());
}

// signature
Expand Down