diff --git a/core/src/main/java/bisq/core/trade/TradeModule.java b/core/src/main/java/bisq/core/trade/TradeModule.java
index 422ec13a83..779cf6e760 100644
--- a/core/src/main/java/bisq/core/trade/TradeModule.java
+++ b/core/src/main/java/bisq/core/trade/TradeModule.java
@@ -26,8 +26,6 @@ import bisq.core.trade.failed.FailedTradesManager;
import bisq.core.trade.statistics.ReferralIdService;
import bisq.core.trade.statistics.TradeStatistics2StorageService;
import bisq.core.trade.statistics.TradeStatisticsManager;
-import bisq.core.trade.txproof.AssetTxProofHttpClient;
-import bisq.core.trade.txproof.xmr.XmrTxProofHttpClient;
import bisq.common.app.AppModule;
import bisq.common.config.Config;
@@ -58,8 +56,6 @@ public class TradeModule extends AppModule {
bind(SignedWitnessStorageService.class).in(Singleton.class);
bind(ReferralIdService.class).in(Singleton.class);
- bind(AssetTxProofHttpClient.class).to(XmrTxProofHttpClient.class);
-
bindConstant().annotatedWith(named(DUMP_STATISTICS)).to(config.dumpStatistics);
bindConstant().annotatedWith(named(DUMP_DELAYED_PAYOUT_TXS)).to(config.dumpDelayedPayoutTxs);
bindConstant().annotatedWith(named(ALLOW_FAULTY_DELAYED_TXS)).to(config.allowFaultyDelayedTxs);
diff --git a/core/src/main/java/bisq/core/trade/txproof/xmr/DevTestXmrTxProofHttpClient.java b/core/src/main/java/bisq/core/trade/txproof/xmr/DevTestXmrTxProofHttpClient.java
deleted file mode 100644
index b415d354c4..0000000000
--- a/core/src/main/java/bisq/core/trade/txproof/xmr/DevTestXmrTxProofHttpClient.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * This file is part of Bisq.
- *
- * Bisq is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * Bisq is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
- * License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with Bisq. If not, see .
- */
-
-package bisq.core.trade.txproof.xmr;
-
-import bisq.core.trade.txproof.AssetTxProofHttpClient;
-
-import bisq.network.Socks5ProxyProvider;
-import bisq.network.http.HttpClientImpl;
-
-import bisq.common.app.DevEnv;
-
-import javax.inject.Inject;
-
-import java.util.Date;
-
-import lombok.extern.slf4j.Slf4j;
-
-import javax.annotation.Nullable;
-
-import static bisq.core.trade.txproof.xmr.XmrTxProofParser.MAX_DATE_TOLERANCE;
-
-/**
- * This should help to test error scenarios in dev testing the app. This is additional to unit test which test the
- * correct data but do not test the context of the results and how it behaves in the UI.
- *
- * You have to change the binding in TradeModule to
- * bind(AssetTxProofHttpClient.class).to(DevTestXmrTxProofHttpClient.class); to use that class.
- *
- * This class can be removed once done testing, but as multiple devs are testing its useful to share it for now.
- */
-@Slf4j
-public class DevTestXmrTxProofHttpClient extends HttpClientImpl implements AssetTxProofHttpClient {
- enum ApiInvalidDetails {
- EMPTY_JSON,
- MISSING_DATA,
- MISSING_STATUS,
- UNHANDLED_STATUS,
- MISSING_ADDRESS,
- MISSING_TX_ID,
- MISSING_VIEW_KEY,
- MISSING_TS,
- MISSING_CONF,
- EXCEPTION
- }
-
- @Inject
- public DevTestXmrTxProofHttpClient(@Nullable Socks5ProxyProvider socks5ProxyProvider) {
- super(socks5ProxyProvider);
- }
-
- private static int counter;
-
- @Override
- public String requestWithGET(String param,
- @Nullable String headerKey,
- @Nullable String headerValue) {
-
- XmrTxProofRequest.Result result = XmrTxProofRequest.Result.PENDING;
- XmrTxProofRequest.Detail detail = XmrTxProofRequest.Detail.TX_NOT_FOUND;
- ApiInvalidDetails apiInvalidDetails = ApiInvalidDetails.EXCEPTION;
-
- int delay = counter == 0 ? 2000 : 100;
- try {
- Thread.sleep(delay);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- if (counter >= 2) {
- detail = XmrTxProofRequest.Detail.PENDING_CONFIRMATIONS.numConfirmations(counter - 2);
- }
- counter++;
- switch (result) {
- case PENDING:
- switch (detail) {
- case TX_NOT_FOUND:
- return validJson().replace("success",
- "fail");
- case PENDING_CONFIRMATIONS:
- return validJson().replace("201287",
- String.valueOf(detail.getNumConfirmations()));
- default:
- return null;
- }
- case SUCCESS:
- return validJson();
- case FAILED:
- switch (detail) {
- case TX_HASH_INVALID:
- return validJson().replace("5e665addf6d7c6300670e8a89564ed12b5c1a21c336408e2835668f9a6a0d802",
- "-");
- case TX_KEY_INVALID:
- return validJson().replace("f3ce66c9d395e5e460c8802b2c3c1fff04e508434f9738ee35558aac4678c906",
- "-");
- case ADDRESS_INVALID:
- return validJson().replace("590f7263428051068bb45cdfcf93407c15b6e291d20c92d0251fcfbf53cc745cdf53319f7d6d7a8e21ea39041aabf31d220a32a875e3ca2087a777f1201c0571",
- "-");
- case NO_MATCH_FOUND:
- return validJson().replace("match\": true",
- "match\": false");
- case AMOUNT_NOT_MATCHING:
- return validJson().replace("8902597360000",
- "18902597360000");
- case TRADE_DATE_NOT_MATCHING:
- DevEnv.setDevMode(false);
- long date = (new Date(1574922644 * 1000L).getTime() - (MAX_DATE_TOLERANCE * 1000L + 1)) / 1000;
- return validJson().replace("1574922644",
- String.valueOf(date));
- default:
- return null;
- }
- case ERROR:
- switch (detail) {
- case CONNECTION_FAILURE:
- // Not part of parser level testing
- return null;
- case API_INVALID:
- switch (apiInvalidDetails) {
- case EMPTY_JSON:
- return null;
- case MISSING_DATA:
- return validJson().replace("data",
- "missing");
- case MISSING_STATUS:
- return validJson().replace("status",
- "missing");
- case UNHANDLED_STATUS:
- return validJson().replace("success",
- "missing");
- case MISSING_ADDRESS:
- return validJson().replace("address",
- "missing");
- case MISSING_TX_ID:
- return validJson().replace("tx_hash",
- "missing");
- case MISSING_VIEW_KEY:
- return validJson().replace("viewkey",
- "missing");
- case MISSING_TS:
- return validJson().replace("tx_timestamp",
- "missing");
- case MISSING_CONF:
- return validJson().replace("tx_confirmations",
- "missing");
- case EXCEPTION:
- return validJson().replace("} ",
- "");
- default:
- return null;
- }
-
- case NO_RESULTS_TIMEOUT:
- // Not part of parser level testing
- return null;
- default:
- return null;
- }
- default:
- return null;
- }
- }
-
- private String validJson() {
- return "{\n" +
- " \"data\": {\n" +
- " \"address\": \"590f7263428051068bb45cdfcf93407c15b6e291d20c92d0251fcfbf53cc745cdf53319f7d6d7a8e21ea39041aabf31d220a32a875e3ca2087a777f1201c0571\",\n" +
- " \"outputs\": [\n" +
- " {\n" +
- " \"amount\": 8902597360000,\n" +
- " \"match\": true,\n" +
- " \"output_idx\": 0,\n" +
- " \"output_pubkey\": \"2b6d2296f2591c198cd1aa47de9a5d74270963412ed30bbcc63b8eff29f0d43e\"\n" +
- " },\n" +
- " {\n" +
- " \"amount\": 0,\n" +
- " \"match\": false,\n" +
- " \"output_idx\": 1,\n" +
- " \"output_pubkey\": \"f53271624847507d80b746e91e689e88bc41678d55246275f5ad3c0f7e8a9ced\"\n" +
- " }\n" +
- " ],\n" +
- " \"tx_confirmations\": 201287,\n" +
- " \"tx_hash\": \"5e665addf6d7c6300670e8a89564ed12b5c1a21c336408e2835668f9a6a0d802\",\n" +
- " \"tx_prove\": true,\n" +
- " \"tx_timestamp\": 1574922644,\n" +
- " \"viewkey\": \"f3ce66c9d395e5e460c8802b2c3c1fff04e508434f9738ee35558aac4678c906\"\n" +
- " },\n" +
- " \"status\": \"success\"\n" +
- "} ";
- }
-
-}
diff --git a/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofHttpClient.java b/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofHttpClient.java
index dce8747383..ac0a4148de 100644
--- a/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofHttpClient.java
+++ b/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofHttpClient.java
@@ -22,14 +22,11 @@ import bisq.core.trade.txproof.AssetTxProofHttpClient;
import bisq.network.Socks5ProxyProvider;
import bisq.network.http.HttpClientImpl;
-import javax.inject.Inject;
-
import lombok.extern.slf4j.Slf4j;
@Slf4j
-public class XmrTxProofHttpClient extends HttpClientImpl implements AssetTxProofHttpClient {
- @Inject
- public XmrTxProofHttpClient(Socks5ProxyProvider socks5ProxyProvider) {
+class XmrTxProofHttpClient extends HttpClientImpl implements AssetTxProofHttpClient {
+ XmrTxProofHttpClient(Socks5ProxyProvider socks5ProxyProvider) {
super(socks5ProxyProvider);
}
}
diff --git a/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofRequest.java b/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofRequest.java
index 9381897e9a..325538acb6 100644
--- a/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofRequest.java
+++ b/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofRequest.java
@@ -21,6 +21,8 @@ import bisq.core.trade.txproof.AssetTxProofHttpClient;
import bisq.core.trade.txproof.AssetTxProofParser;
import bisq.core.trade.txproof.AssetTxProofRequest;
+import bisq.network.Socks5ProxyProvider;
+
import bisq.common.UserThread;
import bisq.common.app.Version;
import bisq.common.handlers.FaultHandler;
@@ -140,9 +142,9 @@ class XmrTxProofRequest implements AssetTxProofRequest
private final ListeningExecutorService executorService = Utilities.getListeningExecutorService(
"XmrTransferProofRequester", 3, 5, 10 * 60);
- private final AssetTxProofHttpClient httpClient;
private final AssetTxProofParser parser;
private final XmrTxProofModel model;
+ private final AssetTxProofHttpClient httpClient;
private final long firstRequest;
private boolean terminated;
@@ -155,12 +157,12 @@ class XmrTxProofRequest implements AssetTxProofRequest
// Constructor
///////////////////////////////////////////////////////////////////////////////////////////
- XmrTxProofRequest(AssetTxProofHttpClient httpClient,
+ XmrTxProofRequest(Socks5ProxyProvider socks5ProxyProvider,
XmrTxProofModel model) {
- this.httpClient = httpClient;
this.parser = new XmrTxProofParser();
this.model = model;
+ httpClient = new XmrTxProofHttpClient(socks5ProxyProvider);
httpClient.setBaseUrl("http://" + model.getServiceAddress());
if (model.getServiceAddress().matches("^192.*|^localhost.*")) {
log.info("Ignoring Socks5 proxy for local net address: {}", model.getServiceAddress());
diff --git a/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofRequestsPerTrade.java b/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofRequestsPerTrade.java
index 634f6b8ae7..73690c6bd5 100644
--- a/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofRequestsPerTrade.java
+++ b/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofRequestsPerTrade.java
@@ -22,11 +22,12 @@ import bisq.core.support.dispute.Dispute;
import bisq.core.support.dispute.mediation.MediationManager;
import bisq.core.support.dispute.refund.RefundManager;
import bisq.core.trade.Trade;
-import bisq.core.trade.txproof.AssetTxProofHttpClient;
import bisq.core.trade.txproof.AssetTxProofRequestsPerTrade;
import bisq.core.trade.txproof.AssetTxProofResult;
import bisq.core.user.AutoConfirmSettings;
+import bisq.network.Socks5ProxyProvider;
+
import bisq.common.handlers.FaultHandler;
import org.bitcoinj.core.Coin;
@@ -54,7 +55,7 @@ class XmrTxProofRequestsPerTrade implements AssetTxProofRequestsPerTrade {
private final AutoConfirmSettings autoConfirmSettings;
private final MediationManager mediationManager;
private final RefundManager refundManager;
- private final AssetTxProofHttpClient httpClient;
+ private final Socks5ProxyProvider socks5ProxyProvider;
private int numRequiredSuccessResults;
private final Set requests = new HashSet<>();
@@ -69,12 +70,12 @@ class XmrTxProofRequestsPerTrade implements AssetTxProofRequestsPerTrade {
// Constructor
///////////////////////////////////////////////////////////////////////////////////////////
- XmrTxProofRequestsPerTrade(AssetTxProofHttpClient httpClient,
+ XmrTxProofRequestsPerTrade(Socks5ProxyProvider socks5ProxyProvider,
Trade trade,
AutoConfirmSettings autoConfirmSettings,
MediationManager mediationManager,
RefundManager refundManager) {
- this.httpClient = httpClient;
+ this.socks5ProxyProvider = socks5ProxyProvider;
this.trade = trade;
this.autoConfirmSettings = autoConfirmSettings;
this.mediationManager = mediationManager;
@@ -140,7 +141,7 @@ class XmrTxProofRequestsPerTrade implements AssetTxProofRequestsPerTrade {
for (String serviceAddress : serviceAddresses) {
XmrTxProofModel model = new XmrTxProofModel(trade, serviceAddress, autoConfirmSettings);
- XmrTxProofRequest request = new XmrTxProofRequest(httpClient, model);
+ XmrTxProofRequest request = new XmrTxProofRequest(socks5ProxyProvider, model);
log.info("{} created", request);
requests.add(request);
diff --git a/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofService.java b/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofService.java
index 4c939f3972..c3ec7de284 100644
--- a/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofService.java
+++ b/core/src/main/java/bisq/core/trade/txproof/xmr/XmrTxProofService.java
@@ -27,12 +27,12 @@ import bisq.core.trade.Trade;
import bisq.core.trade.TradeManager;
import bisq.core.trade.closed.ClosedTradableManager;
import bisq.core.trade.failed.FailedTradesManager;
-import bisq.core.trade.txproof.AssetTxProofHttpClient;
import bisq.core.trade.txproof.AssetTxProofResult;
import bisq.core.trade.txproof.AssetTxProofService;
import bisq.core.user.AutoConfirmSettings;
import bisq.core.user.Preferences;
+import bisq.network.Socks5ProxyProvider;
import bisq.network.p2p.BootstrapListener;
import bisq.network.p2p.P2PService;
@@ -76,7 +76,7 @@ public class XmrTxProofService implements AssetTxProofService {
private final RefundManager refundManager;
private final P2PService p2PService;
private final WalletsSetup walletsSetup;
- private final AssetTxProofHttpClient httpClient;
+ private final Socks5ProxyProvider socks5ProxyProvider;
private final Map servicesByTradeId = new HashMap<>();
private AutoConfirmSettings autoConfirmSettings;
private Map> tradeStateListenerMap = new HashMap<>();
@@ -101,7 +101,7 @@ public class XmrTxProofService implements AssetTxProofService {
RefundManager refundManager,
P2PService p2PService,
WalletsSetup walletsSetup,
- AssetTxProofHttpClient httpClient) {
+ Socks5ProxyProvider socks5ProxyProvider) {
this.filterManager = filterManager;
this.preferences = preferences;
this.tradeManager = tradeManager;
@@ -111,7 +111,7 @@ public class XmrTxProofService implements AssetTxProofService {
this.refundManager = refundManager;
this.p2PService = p2PService;
this.walletsSetup = walletsSetup;
- this.httpClient = httpClient;
+ this.socks5ProxyProvider = socks5ProxyProvider;
}
@@ -247,7 +247,7 @@ public class XmrTxProofService implements AssetTxProofService {
}
private void startRequests(SellerTrade trade) {
- XmrTxProofRequestsPerTrade service = new XmrTxProofRequestsPerTrade(httpClient,
+ XmrTxProofRequestsPerTrade service = new XmrTxProofRequestsPerTrade(socks5ProxyProvider,
trade,
autoConfirmSettings,
mediationManager,