Add Bylls BTC/CAD rates

This commit is contained in:
Matthew Isnor 2022-11-05 12:29:11 -03:00
parent 6481d83b0c
commit 5baa232c67
2 changed files with 54 additions and 0 deletions

View file

@ -107,6 +107,48 @@ public enum ExchangeSource {
return new CoinGeckoRates();
}
}
},
BYLLS("Bylls")
{
@Override
public List<Currency> getSupportedCurrencies() {
// Bylls is a CAD only exchange
String currency = getRates().public_price.to_currency;
if (ExchangeSource.isValidISO4217Code(currency.toUpperCase(Locale.ROOT))) {
return Arrays.asList(Currency.getInstance(currency.toUpperCase(Locale.ROOT)));
} else {
return new ArrayList<Currency>();
}
}
@Override
public Double getExchangeRate(Currency currency) {
return getRates().public_price.to_price;
}
private ByllsRates getRates()
{
String url = "https://bylls.com/api/price?from_currency=BTC&to_currency=CAD";
Proxy proxy = AppServices.getProxy();
if(log.isInfoEnabled()) {
log.info("Requesting exchange rates from " + url);
}
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, ByllsRates.class);
}
catch (Exception e) {
if (log.isDebugEnabled()) {
log.warn("Error retrieving currency rates", e);
} else {
log.warn("Error retrieving currency rates (" + e.getMessage() + ")");
}
return new ByllsRates();
}
}
};
private static final Logger log = LoggerFactory.getLogger(ExchangeSource.class);
@ -194,4 +236,15 @@ public enum ExchangeSource {
Double value;
String type;
}
private static class ByllsRate {
String from_currency;
String to_currency;
Double from_price;
Double to_price;
}
private static class ByllsRates {
ByllsRate public_price;
}
}

View file

@ -66,6 +66,7 @@
<ExchangeSource fx:constant="NONE" />
<ExchangeSource fx:constant="COINBASE" />
<ExchangeSource fx:constant="COINGECKO" />
<ExchangeSource fx:constant="BYLLS" />
</FXCollections>
</items>
</ComboBox>