Rate sources can now determine prefered fiat currency

This commit is contained in:
b00lean 2014-12-12 15:28:25 +01:00
parent c3644f4462
commit 6ee06ea0da
23 changed files with 224 additions and 19 deletions

View File

@ -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();
}

View File

@ -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("**","**");
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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;
}
}

View File

@ -98,4 +98,9 @@ public class ChainSoRateSource implements IRateSource{
result.add(ICurrencies.USD);
return result;
}
@Override
public String getPreferredFiatCurrency() {
return ICurrencies.USD;
}
}

View File

@ -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();
}

View File

@ -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;
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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;
}
}