Browse Source

use proxy for exchange rate if available, move to exchange rate to net package

bwt
Craig Raw 4 years ago
parent
commit
02c8415a7b
  1. 1
      src/main/java/com/sparrowwallet/sparrow/AppController.java
  2. 2
      src/main/java/com/sparrowwallet/sparrow/event/FiatCurrencySelectedEvent.java
  3. 1
      src/main/java/com/sparrowwallet/sparrow/io/Config.java
  4. 23
      src/main/java/com/sparrowwallet/sparrow/net/ExchangeSource.java
  5. 2
      src/main/java/com/sparrowwallet/sparrow/preferences/GeneralPreferencesController.java
  6. 4
      src/main/java/com/sparrowwallet/sparrow/preferences/ServerPreferencesController.java
  7. 2
      src/main/java/com/sparrowwallet/sparrow/wallet/PaymentController.java
  8. 2
      src/main/java/com/sparrowwallet/sparrow/wallet/SendController.java
  9. 2
      src/main/java/com/sparrowwallet/sparrow/wallet/TransactionsController.java
  10. 2
      src/main/resources/com/sparrowwallet/sparrow/preferences/general.fxml

1
src/main/java/com/sparrowwallet/sparrow/AppController.java

@ -25,6 +25,7 @@ import com.sparrowwallet.sparrow.control.*;
import com.sparrowwallet.sparrow.event.*;
import com.sparrowwallet.sparrow.io.*;
import com.sparrowwallet.sparrow.net.ElectrumServer;
import com.sparrowwallet.sparrow.net.ExchangeSource;
import com.sparrowwallet.sparrow.net.MempoolRateSize;
import com.sparrowwallet.sparrow.net.VersionCheckService;
import com.sparrowwallet.sparrow.preferences.PreferencesDialog;

2
src/main/java/com/sparrowwallet/sparrow/event/FiatCurrencySelectedEvent.java

@ -1,6 +1,6 @@
package com.sparrowwallet.sparrow.event;
import com.sparrowwallet.sparrow.io.ExchangeSource;
import com.sparrowwallet.sparrow.net.ExchangeSource;
import java.util.Currency;

1
src/main/java/com/sparrowwallet/sparrow/io/Config.java

@ -4,6 +4,7 @@ import com.google.gson.*;
import com.sparrowwallet.drongo.BitcoinUnit;
import com.sparrowwallet.sparrow.Mode;
import com.sparrowwallet.sparrow.Theme;
import com.sparrowwallet.sparrow.net.ExchangeSource;
import com.sparrowwallet.sparrow.wallet.FeeRateSelection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

23
src/main/java/com/sparrowwallet/sparrow/io/ExchangeSource.java → src/main/java/com/sparrowwallet/sparrow/net/ExchangeSource.java

@ -1,7 +1,9 @@
package com.sparrowwallet.sparrow.io;
package com.sparrowwallet.sparrow.net;
import com.google.common.net.HostAndPort;
import com.google.gson.Gson;
import com.sparrowwallet.sparrow.event.ExchangeRatesUpdatedEvent;
import com.sparrowwallet.sparrow.io.Config;
import javafx.concurrent.ScheduledService;
import javafx.concurrent.Service;
import javafx.concurrent.Task;
@ -11,6 +13,8 @@ import org.slf4j.LoggerFactory;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.*;
@ -48,8 +52,9 @@ public enum ExchangeSource {
private CoinbaseRates getRates() {
String url = "https://api.coinbase.com/v2/exchange-rates?currency=BTC";
Proxy proxy = getProxy();
try(InputStream is = new URL(url).openStream(); Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8)) {
try(InputStream is = (proxy == null ? new URL(url).openStream() : new URL(url).openConnection(proxy).getInputStream()); Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8)) {
Gson gson = new Gson();
return gson.fromJson(reader, CoinbaseRates.class);
} catch (Exception e) {
@ -78,8 +83,9 @@ public enum ExchangeSource {
private CoinGeckoRates getRates() {
String url = "https://api.coingecko.com/api/v3/exchange_rates";
Proxy proxy = getProxy();
try(InputStream is = new URL(url).openStream(); Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8)) {
try(InputStream is = (proxy == null ? new URL(url).openStream() : new URL(url).openConnection(proxy).getInputStream()); Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8)) {
Gson gson = new Gson();
return gson.fromJson(reader, CoinGeckoRates.class);
} catch (Exception e) {
@ -110,6 +116,17 @@ public enum ExchangeSource {
}
}
private static Proxy getProxy() {
Config config = Config.get();
if(config.isUseProxy()) {
HostAndPort proxy = HostAndPort.fromString(config.getProxyServer());
InetSocketAddress proxyAddress = new InetSocketAddress(proxy.getHost(), proxy.getPortOrDefault(ProxyTcpOverTlsTransport.DEFAULT_PROXY_PORT));
return new Proxy(Proxy.Type.SOCKS, proxyAddress);
}
return null;
}
@Override
public String toString() {
return name;

2
src/main/java/com/sparrowwallet/sparrow/preferences/GeneralPreferencesController.java

@ -8,7 +8,7 @@ import com.sparrowwallet.sparrow.event.FeeRateSelectionChangedEvent;
import com.sparrowwallet.sparrow.event.FiatCurrencySelectedEvent;
import com.sparrowwallet.sparrow.event.VersionCheckStatusEvent;
import com.sparrowwallet.sparrow.io.Config;
import com.sparrowwallet.sparrow.io.ExchangeSource;
import com.sparrowwallet.sparrow.net.ExchangeSource;
import com.sparrowwallet.sparrow.wallet.FeeRateSelection;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;

4
src/main/java/com/sparrowwallet/sparrow/preferences/ServerPreferencesController.java

@ -296,6 +296,10 @@ public class ServerPreferencesController extends PreferencesDetailController {
@NotNull
private ChangeListener<String> getProxyListener(Config config) {
return (observable, oldValue, newValue) -> {
if(oldValue.trim().equals(newValue.trim())) {
return;
}
String hostAsString = getHost(proxyHost.getText());
Integer portAsInteger = getPort(proxyPort.getText());
if(hostAsString != null && portAsInteger != null && isValidPort(portAsInteger)) {

2
src/main/java/com/sparrowwallet/sparrow/wallet/PaymentController.java

@ -22,7 +22,7 @@ import com.sparrowwallet.sparrow.event.BitcoinUnitChangedEvent;
import com.sparrowwallet.sparrow.event.ExchangeRatesUpdatedEvent;
import com.sparrowwallet.sparrow.event.FiatCurrencySelectedEvent;
import com.sparrowwallet.sparrow.io.Config;
import com.sparrowwallet.sparrow.io.ExchangeSource;
import com.sparrowwallet.sparrow.net.ExchangeSource;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;

2
src/main/java/com/sparrowwallet/sparrow/wallet/SendController.java

@ -12,7 +12,7 @@ import com.sparrowwallet.sparrow.EventManager;
import com.sparrowwallet.sparrow.control.*;
import com.sparrowwallet.sparrow.event.*;
import com.sparrowwallet.sparrow.io.Config;
import com.sparrowwallet.sparrow.io.ExchangeSource;
import com.sparrowwallet.sparrow.net.ExchangeSource;
import com.sparrowwallet.sparrow.net.ElectrumServer;
import com.sparrowwallet.sparrow.net.MempoolRateSize;
import javafx.application.Platform;

2
src/main/java/com/sparrowwallet/sparrow/wallet/TransactionsController.java

@ -9,7 +9,7 @@ import com.sparrowwallet.sparrow.control.CoinLabel;
import com.sparrowwallet.sparrow.control.FiatLabel;
import com.sparrowwallet.sparrow.control.TransactionsTreeTable;
import com.sparrowwallet.sparrow.event.*;
import com.sparrowwallet.sparrow.io.ExchangeSource;
import com.sparrowwallet.sparrow.net.ExchangeSource;
import javafx.collections.ListChangeListener;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;

2
src/main/resources/com/sparrowwallet/sparrow/preferences/general.fxml

@ -12,7 +12,7 @@
<?import javafx.collections.FXCollections?>
<?import javafx.geometry.Insets?>
<?import com.sparrowwallet.drongo.BitcoinUnit?>
<?import com.sparrowwallet.sparrow.io.ExchangeSource?>
<?import com.sparrowwallet.sparrow.net.ExchangeSource?>
<?import com.sparrowwallet.sparrow.control.UnlabeledToggleSwitch?>
<?import com.sparrowwallet.sparrow.control.HelpLabel?>
<?import com.sparrowwallet.sparrow.wallet.FeeRateSelection?>

Loading…
Cancel
Save