Rate sources can now determine prefered fiat currency
This commit is contained in:
parent
c3644f4462
commit
6ee06ea0da
|
@ -45,4 +45,11 @@ public interface IRateSource {
|
|||
* @return
|
||||
*/
|
||||
public BigDecimal getExchangeRateLast(String cryptoCurrency, String fiatCurrency);
|
||||
|
||||
/**
|
||||
* Returns fiat currency that is used for actual purchases of cryptocurrency by server
|
||||
* @return
|
||||
*/
|
||||
public String getPreferredFiatCurrency();
|
||||
|
||||
}
|
||||
|
|
|
@ -120,16 +120,23 @@ public class BitcoinExtension implements IExtension{
|
|||
String exchangeType = st.nextToken();
|
||||
|
||||
if ("bitcoinaverage".equalsIgnoreCase(exchangeType)) {
|
||||
return new BitcoinAverageRateSource();
|
||||
if (st.hasMoreTokens()) {
|
||||
return new BitcoinAverageRateSource(st.nextToken());
|
||||
}
|
||||
return new BitcoinAverageRateSource(ICurrencies.USD);
|
||||
}else if ("btcfix".equalsIgnoreCase(exchangeType)) {
|
||||
BigDecimal rate = BigDecimal.ZERO;
|
||||
String preferedFiatCurrency = ICurrencies.USD;
|
||||
if (st.hasMoreTokens()) {
|
||||
try {
|
||||
rate = new BigDecimal(st.nextToken());
|
||||
} catch (Throwable e) {
|
||||
}
|
||||
}
|
||||
return new FixPriceRateSource(rate);
|
||||
if (st.hasMoreTokens()) {
|
||||
preferedFiatCurrency = st.nextToken();
|
||||
}
|
||||
return new FixPriceRateSource(rate,preferedFiatCurrency);
|
||||
}else if ("bitfinex".equalsIgnoreCase(exchangeType)) {
|
||||
return new BitfinexExchange("**","**");
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ import com.xeiam.xchange.service.polling.PollingTradeService;
|
|||
|
||||
public class BitfinexExchange implements IExchange, IRateSource {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger("batm.master.BitfinexEchange");
|
||||
private static final Logger log = LoggerFactory.getLogger("batm.master.BitfinexExchange");
|
||||
private Exchange exchange = null;
|
||||
private String apiKey;
|
||||
private String apiSecret;
|
||||
|
@ -249,4 +249,17 @@ public class BitfinexExchange implements IExchange, IRateSource {
|
|||
return null;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
BitfinexExchange ex = new BitfinexExchange("UKe2l4ij2jKg8zwaCIJ9qpwIasJ4EhfxiiB0KToG9Ky","35XkZ6IJD9EOfRex80xHwXSgaun7uXdBgzVdiOg5XOi");
|
||||
BigDecimal btc = ex.getCryptoBalance(ICurrencies.BTC);
|
||||
System.out.println("btc = " + btc);
|
||||
|
||||
BigDecimal fiatBalance = ex.getFiatBalance(ICurrencies.USD);
|
||||
System.out.println("fiatBalance = " + fiatBalance);
|
||||
|
||||
String test = ex.sendCoins("15nvjrMZbxyLAAr9RAnqkoMXcFriAmbeLE", new BigDecimal("0.02"), ICurrencies.BTC, "Test");
|
||||
System.out.println("test = " + test);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,6 +35,18 @@ public class BitcoinAverageRateSource implements IRateSource{
|
|||
private static HashMap<String,Long> rateTimes = new HashMap<String, Long>();
|
||||
private static final long MAXIMUM_ALLOWED_TIME_OFFSET = 30 * 1000; //30sec
|
||||
|
||||
private String preferedFiatCurrency = ICurrencies.USD;
|
||||
|
||||
public BitcoinAverageRateSource(String preferedFiatCurrency) {
|
||||
if (ICurrencies.EUR.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.EUR;
|
||||
}
|
||||
if (ICurrencies.USD.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.USD;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal getExchangeRateLast(String cryptoCurrency, String fiatCurrency) {
|
||||
if (!ICurrencies.BTC.equalsIgnoreCase(cryptoCurrency)) {
|
||||
|
@ -115,4 +127,9 @@ public class BitcoinAverageRateSource implements IRateSource{
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return preferedFiatCurrency;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,9 +12,17 @@ import java.util.Set;
|
|||
*/
|
||||
public class FixPriceRateSource implements IRateSource {
|
||||
private BigDecimal rate = BigDecimal.ZERO;
|
||||
private String preferedFiatCurrency = ICurrencies.USD;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate) {
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate,String preferedFiatCurrency) {
|
||||
this.rate = rate;
|
||||
if (ICurrencies.EUR.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.EUR;
|
||||
}
|
||||
if (ICurrencies.USD.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.USD;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -40,4 +48,8 @@ public class FixPriceRateSource implements IRateSource {
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return preferedFiatCurrency;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -105,7 +105,11 @@ public class DogecoinExtension implements IExtension{
|
|||
} catch (Throwable e) {
|
||||
}
|
||||
}
|
||||
return new FixPriceRateSource(rate);
|
||||
String preferedFiatCurrency = ICurrencies.USD;
|
||||
if (st.hasMoreTokens()) {
|
||||
preferedFiatCurrency = st.nextToken();
|
||||
}
|
||||
return new FixPriceRateSource(rate,preferedFiatCurrency);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
|
|
@ -13,8 +13,16 @@ import java.util.Set;
|
|||
public class FixPriceRateSource implements IRateSource {
|
||||
private BigDecimal rate = BigDecimal.ZERO;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate) {
|
||||
private String preferedFiatCurrency = ICurrencies.USD;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate,String preferedFiatCurrency) {
|
||||
this.rate = rate;
|
||||
if (ICurrencies.EUR.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.EUR;
|
||||
}
|
||||
if (ICurrencies.USD.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.USD;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -39,5 +47,9 @@ public class FixPriceRateSource implements IRateSource {
|
|||
result.add(ICurrencies.EUR);
|
||||
return result;
|
||||
}
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return preferedFiatCurrency;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -98,4 +98,9 @@ public class ChainSoRateSource implements IRateSource{
|
|||
result.add(ICurrencies.USD);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return ICurrencies.USD;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,7 +94,11 @@ public class GuldencoinExtension implements IExtension{
|
|||
} catch (Throwable e) {
|
||||
}
|
||||
}
|
||||
return new FixPriceRateSource(rate);
|
||||
String preferedFiatCurrency = ICurrencies.USD;
|
||||
if (st.hasMoreTokens()) {
|
||||
preferedFiatCurrency = st.nextToken();
|
||||
}
|
||||
return new FixPriceRateSource(rate,preferedFiatCurrency);
|
||||
}else if ("guldencoincom".equalsIgnoreCase(prefix)) {
|
||||
return new GuldencoinTickerRateSource();
|
||||
}
|
||||
|
|
|
@ -13,8 +13,16 @@ import java.util.Set;
|
|||
public class FixPriceRateSource implements IRateSource {
|
||||
private BigDecimal rate = BigDecimal.ZERO;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate) {
|
||||
private String preferedFiatCurrency = ICurrencies.USD;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate,String preferedFiatCurrency) {
|
||||
this.rate = rate;
|
||||
if (ICurrencies.EUR.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.EUR;
|
||||
}
|
||||
if (ICurrencies.USD.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.USD;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -39,4 +47,8 @@ public class FixPriceRateSource implements IRateSource {
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return preferedFiatCurrency;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -108,8 +108,15 @@ public class GuldencoinTickerRateSource implements IRateSource{
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return ICurrencies.EUR;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
BigDecimal exchangeRateLast = (new GuldencoinTickerRateSource()).getExchangeRateLast("NLG", "EUR");
|
||||
System.out.println("exchangeRateLast = " + exchangeRateLast);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -93,7 +93,11 @@ public class IncognitocoinExtension implements IExtension{
|
|||
} catch (Throwable e) {
|
||||
}
|
||||
}
|
||||
return new FixPriceRateSource(rate);
|
||||
String preferedFiatCurrency = ICurrencies.USD;
|
||||
if (st.hasMoreTokens()) {
|
||||
preferedFiatCurrency = st.nextToken();
|
||||
}
|
||||
return new FixPriceRateSource(rate,preferedFiatCurrency);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,8 +13,16 @@ import java.util.Set;
|
|||
public class FixPriceRateSource implements IRateSource {
|
||||
private BigDecimal rate = BigDecimal.ZERO;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate) {
|
||||
private String preferedFiatCurrency = ICurrencies.USD;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate,String preferedFiatCurrency) {
|
||||
this.rate = rate;
|
||||
if (ICurrencies.EUR.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.EUR;
|
||||
}
|
||||
if (ICurrencies.USD.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.USD;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -40,4 +48,9 @@ public class FixPriceRateSource implements IRateSource {
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return preferedFiatCurrency;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -93,7 +93,11 @@ public class LeocoinExtension implements IExtension{
|
|||
} catch (Throwable e) {
|
||||
}
|
||||
}
|
||||
return new FixPriceRateSource(rate);
|
||||
String preferedFiatCurrency = ICurrencies.USD;
|
||||
if (st.hasMoreTokens()) {
|
||||
preferedFiatCurrency = st.nextToken();
|
||||
}
|
||||
return new FixPriceRateSource(rate,preferedFiatCurrency);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,8 +13,16 @@ import java.util.Set;
|
|||
public class FixPriceRateSource implements IRateSource {
|
||||
private BigDecimal rate = BigDecimal.ZERO;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate) {
|
||||
private String preferedFiatCurrency = ICurrencies.USD;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate,String preferedFiatCurrency) {
|
||||
this.rate = rate;
|
||||
if (ICurrencies.EUR.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.EUR;
|
||||
}
|
||||
if (ICurrencies.USD.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.USD;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -40,4 +48,8 @@ public class FixPriceRateSource implements IRateSource {
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return preferedFiatCurrency;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,6 +99,9 @@ public class LitecoinExtension implements IExtension{
|
|||
String exchangeType = st.nextToken();
|
||||
|
||||
if ("btce".equalsIgnoreCase(exchangeType)) {
|
||||
if (st.hasMoreTokens()) {
|
||||
return new BTCeRateSource(st.nextToken());
|
||||
}
|
||||
return new BTCeRateSource();
|
||||
}else if ("ltcfix".equalsIgnoreCase(exchangeType)) {
|
||||
BigDecimal rate = BigDecimal.ZERO;
|
||||
|
@ -108,7 +111,11 @@ public class LitecoinExtension implements IExtension{
|
|||
} catch (Throwable e) {
|
||||
}
|
||||
}
|
||||
return new FixPriceRateSource(rate);
|
||||
String preferedFiatCurrency = ICurrencies.USD;
|
||||
if (st.hasMoreTokens()) {
|
||||
preferedFiatCurrency = st.nextToken();
|
||||
}
|
||||
return new FixPriceRateSource(rate,preferedFiatCurrency);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,8 +13,16 @@ import java.util.Set;
|
|||
public class FixPriceRateSource implements IRateSource {
|
||||
private BigDecimal rate = BigDecimal.ZERO;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate) {
|
||||
private String preferedFiatCurrency = ICurrencies.USD;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate,String preferedFiatCurrency) {
|
||||
this.rate = rate;
|
||||
if (ICurrencies.EUR.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.EUR;
|
||||
}
|
||||
if (ICurrencies.USD.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.USD;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -40,4 +48,9 @@ public class FixPriceRateSource implements IRateSource {
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return preferedFiatCurrency;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -33,8 +33,19 @@ public class BTCeRateSource implements IRateSource{
|
|||
private static HashMap<String,Long> rateTimes = new HashMap<String, Long>();
|
||||
private static final long MAXIMUM_ALLOWED_TIME_OFFSET = 30 * 1000; //30sec
|
||||
|
||||
private String preferedFiatCurrency = ICurrencies.USD;
|
||||
private IBTCeRateAPI api;
|
||||
|
||||
public BTCeRateSource(String preferedFiatCurrency) {
|
||||
this();
|
||||
if (ICurrencies.EUR.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.EUR;
|
||||
}
|
||||
if (ICurrencies.USD.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.USD;
|
||||
}
|
||||
}
|
||||
|
||||
public BTCeRateSource() {
|
||||
api = RestProxyFactory.createProxy(IBTCeRateAPI.class, "https://btc-e.com");
|
||||
}
|
||||
|
@ -104,4 +115,9 @@ public class BTCeRateSource implements IRateSource{
|
|||
result.add(ICurrencies.EUR);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return preferedFiatCurrency;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -96,7 +96,11 @@ public class MaxcoinExtension implements IExtension{
|
|||
} catch (Throwable e) {
|
||||
}
|
||||
}
|
||||
return new FixPriceRateSource(rate);
|
||||
String preferedFiatCurrency = ICurrencies.USD;
|
||||
if (st.hasMoreTokens()) {
|
||||
preferedFiatCurrency = st.nextToken();
|
||||
}
|
||||
return new FixPriceRateSource(rate,preferedFiatCurrency);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,8 +13,16 @@ import java.util.Set;
|
|||
public class FixPriceRateSource implements IRateSource {
|
||||
private BigDecimal rate = BigDecimal.ZERO;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate) {
|
||||
private String preferedFiatCurrency = ICurrencies.USD;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate,String preferedFiatCurrency) {
|
||||
this.rate = rate;
|
||||
if (ICurrencies.EUR.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.EUR;
|
||||
}
|
||||
if (ICurrencies.USD.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.USD;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -39,5 +47,8 @@ public class FixPriceRateSource implements IRateSource {
|
|||
result.add(ICurrencies.EUR);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return preferedFiatCurrency;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -111,6 +111,11 @@ public class MaxcoinTickerRateSource implements IRateSource{
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return ICurrencies.USD;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
MaxcoinTickerRateSource rs = new MaxcoinTickerRateSource();
|
||||
BigDecimal exchangeRateLast = rs.getExchangeRateLast(ICurrencies.MAX, ICurrencies.USD);
|
||||
|
|
|
@ -76,7 +76,11 @@ public class NubitsExtension implements IExtension{
|
|||
} catch (Throwable e) {
|
||||
}
|
||||
}
|
||||
return new FixPriceRateSource(rate);
|
||||
String preferedFiatCurrency = ICurrencies.USD;
|
||||
if (st.hasMoreTokens()) {
|
||||
preferedFiatCurrency = st.nextToken();
|
||||
}
|
||||
return new FixPriceRateSource(rate,preferedFiatCurrency);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,8 +13,16 @@ import java.util.Set;
|
|||
public class FixPriceRateSource implements IRateSource {
|
||||
private BigDecimal rate = BigDecimal.ZERO;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate) {
|
||||
private String preferedFiatCurrency = ICurrencies.USD;
|
||||
|
||||
public FixPriceRateSource(BigDecimal rate,String preferedFiatCurrency) {
|
||||
this.rate = rate;
|
||||
if (ICurrencies.EUR.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.EUR;
|
||||
}
|
||||
if (ICurrencies.USD.equalsIgnoreCase(preferedFiatCurrency)) {
|
||||
this.preferedFiatCurrency = ICurrencies.USD;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -39,4 +47,8 @@ public class FixPriceRateSource implements IRateSource {
|
|||
result.add(ICurrencies.EUR);
|
||||
return result;
|
||||
}
|
||||
@Override
|
||||
public String getPreferredFiatCurrency() {
|
||||
return preferedFiatCurrency;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue