Skip to content
Merged
1 change: 1 addition & 0 deletions DataModule/res/values/market_cautions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
<string name="market_caution_unknown">Selected market was probably removed and does not exist. Please choose another one.</string>
<string name="market_caution_much_data">Caution: Due to this exchange\'s specification checking price on it may consume a lot of mobile data (while on mobile network). Be sure that you understand the possible consequences.</string>
<string name="market_caution_allcoin">This exchange has limit for 3000 requests per hour. Make sure you don\'t exceed the limit:)</string>
<string name="market_caution_yobit">This exchange has limit for 100 requests per minute. Make sure you don\'t exceed the limit:)</string>

</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.mobnetic.coinguardian.model.market.BitBay;
import com.mobnetic.coinguardian.model.market.BitCore;
import com.mobnetic.coinguardian.model.market.BitKonan;
import com.mobnetic.coinguardian.model.market.BitMarket24PL;
import com.mobnetic.coinguardian.model.market.BitMarketPL;
import com.mobnetic.coinguardian.model.market.BitMaszyna;
import com.mobnetic.coinguardian.model.market.BitTrex;
Expand All @@ -21,7 +22,6 @@
import com.mobnetic.coinguardian.model.market.Bitcurex;
import com.mobnetic.coinguardian.model.market.BitexLa;
import com.mobnetic.coinguardian.model.market.Bitfinex;
import com.mobnetic.coinguardian.model.market.BitMarket24PL;
import com.mobnetic.coinguardian.model.market.Bitorado;
import com.mobnetic.coinguardian.model.market.Bitso;
import com.mobnetic.coinguardian.model.market.Bitstamp;
Expand Down Expand Up @@ -75,12 +75,14 @@
import com.mobnetic.coinguardian.model.market.Mercado;
import com.mobnetic.coinguardian.model.market.Mexbt;
import com.mobnetic.coinguardian.model.market.MintPal;
import com.mobnetic.coinguardian.model.market.OKCoinFutures;
import com.mobnetic.coinguardian.model.market.Okcoin;
import com.mobnetic.coinguardian.model.market.Paymium;
import com.mobnetic.coinguardian.model.market.Poloniex;
import com.mobnetic.coinguardian.model.market.Prelude;
import com.mobnetic.coinguardian.model.market.QuadrigaCX;
import com.mobnetic.coinguardian.model.market.Ripio;
import com.mobnetic.coinguardian.model.market.SevenNineSix;
import com.mobnetic.coinguardian.model.market.ShareXcoin;
import com.mobnetic.coinguardian.model.market.SwissCex;
import com.mobnetic.coinguardian.model.market.TheRock;
Expand All @@ -91,8 +93,8 @@
import com.mobnetic.coinguardian.model.market.Vircurex;
import com.mobnetic.coinguardian.model.market.Virtex;
import com.mobnetic.coinguardian.model.market.Winkdex;
import com.mobnetic.coinguardian.model.market.YoBit;
import com.mobnetic.coinguardian.model.market.Zaydo;
import com.mobnetic.coinguardian.model.market.SevenNineSix;

public class MarketsConfig {

Expand Down Expand Up @@ -192,5 +194,8 @@ private final static void addMarket(Market market) {
addMarket(new BtcBox());
addMarket(new BtcXIndia());
addMarket(new Uphold());
addMarket(new YoBit());
addMarket(new OKCoinFutures());
// addMarket(new FoscEx());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@

public class CheckerInfo extends CurrencyPairInfo {

public CheckerInfo(String currencyBase, String currencyCounter, String currencyPairId) {
protected final int contractType;

public CheckerInfo(String currencyBase, String currencyCounter, String currencyPairId, int contractType) {
super(currencyBase, currencyCounter, currencyPairId);
this.contractType = contractType;
}

public String getCurrencyBaseLowerCase() {
Expand All @@ -15,4 +18,8 @@ public String getCurrencyBaseLowerCase() {
public String getCurrencyCounterLowerCase() {
return getCurrencyCounter().toLowerCase(Locale.US);
}

public int getContractType() {
return contractType;
}
}
26 changes: 26 additions & 0 deletions DataModule/src/com/mobnetic/coinguardian/model/Futures.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.mobnetic.coinguardian.model;

public class Futures {

public final static int CONTRACT_TYPE_WEEKLY = 0;
public final static int CONTRACT_TYPE_BIWEEKLY = 1;
public final static int CONTRACT_TYPE_MONTHLY = 2;
public final static int CONTRACT_TYPE_BIMONTHLY = 3;
public final static int CONTRACT_TYPE_QUARTERLY = 4;

private final static String[] CONTRACT_TYPE_SHORT_NAMES = new String[] {
"1W",
"2W",
"1M",
"2M",
"3M"
};

public static String getContractTypeShortName(int contractType) {
if (contractType >=0 && contractType < CONTRACT_TYPE_SHORT_NAMES.length) {
return CONTRACT_TYPE_SHORT_NAMES[contractType];
}
return null;
}

}
22 changes: 22 additions & 0 deletions DataModule/src/com/mobnetic/coinguardian/model/FuturesMarket.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.mobnetic.coinguardian.model;

import java.util.HashMap;

public abstract class FuturesMarket extends Market {

public final int[] contractTypes;

public FuturesMarket(String name, String ttsName, HashMap<String, CharSequence[]> currencyPairs, int[] contractTypes) {
super(name, ttsName, currencyPairs);
this.contractTypes = contractTypes;
}

@Override
public final String getUrl(int requestId, CheckerInfo checkerInfo) {
// TODO Auto-generated method stub
return getUrl(requestId, checkerInfo, checkerInfo.getContractType());
}

protected abstract String getUrl(int requestId, CheckerInfo checkerInfo, int contractType);

}
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ public class VirtualCurrency {
public static final String KDC = "KDC";
public static final String KGC = "KGC";
public static final String KKC = "KKC";
public static final String KNC = "KNC";
public static final String KOI = "KOI";
public static final String KRN = "KRN";
public static final String KUN = "KUN";
Expand Down
18 changes: 7 additions & 11 deletions DataModule/src/com/mobnetic/coinguardian/model/market/AllCoin.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.mobnetic.coinguardian.model.CheckerInfo;
import com.mobnetic.coinguardian.model.CurrencyPairInfo;
import com.mobnetic.coinguardian.model.Market;
import com.mobnetic.coinguardian.model.Ticker;
import com.mobnetic.coinguardian.util.ParseUtils;
import com.mobnetic.coinguardiandatamodule.R;

public class AllCoin extends Market {
Expand All @@ -31,16 +31,12 @@ public String getUrl(int requestId, CheckerInfo checkerInfo) {
@Override
protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception {
final JSONObject dataJsonObject = jsonObject.getJSONObject("data");
ticker.bid = getDoubleFromString(dataJsonObject, "top_bid");
ticker.ask = getDoubleFromString(dataJsonObject, "top_ask");
ticker.vol = getDoubleFromString(dataJsonObject, "volume_24h_"+checkerInfo.getCurrencyBase());
ticker.high = getDoubleFromString(dataJsonObject, "max_24h_price");
ticker.low = getDoubleFromString(dataJsonObject, "min_24h_price");
ticker.last = getDoubleFromString(dataJsonObject, "trade_price");
}

private double getDoubleFromString(JSONObject jsonObject, String name) throws NumberFormatException, JSONException {
return Double.parseDouble(jsonObject.getString(name));
ticker.bid = ParseUtils.getDoubleFromString(dataJsonObject, "top_bid");
ticker.ask = ParseUtils.getDoubleFromString(dataJsonObject, "top_ask");
ticker.vol = ParseUtils.getDoubleFromString(dataJsonObject, "volume_24h_"+checkerInfo.getCurrencyBase());
ticker.high = ParseUtils.getDoubleFromString(dataJsonObject, "max_24h_price");
ticker.low = ParseUtils.getDoubleFromString(dataJsonObject, "min_24h_price");
ticker.last = ParseUtils.getDoubleFromString(dataJsonObject, "trade_price");
}

@Override
Expand Down
39 changes: 11 additions & 28 deletions DataModule/src/com/mobnetic/coinguardian/model/market/Bitfinex.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,22 @@

import java.util.HashMap;
import java.util.LinkedHashMap;

import org.json.JSONObject;

import com.mobnetic.coinguardian.model.CheckerInfo;
import com.mobnetic.coinguardian.model.Market;
import com.mobnetic.coinguardian.model.Ticker;
import com.mobnetic.coinguardian.model.currency.Currency;
import com.mobnetic.coinguardian.model.currency.VirtualCurrency;
import com.mobnetic.coinguardian.util.ParseUtils;
import com.mobnetic.coinguardian.util.TimeUtils;

public class Bitfinex extends Market {

private final static String NAME = "Bitfinex";
private final static String TTS_NAME = NAME;
private final static String URL = "https://api.bitfinex.com/v1/ticker/%1$s%2$s";
private final static String URL_SECOND = "https://api.bitfinex.com/v1/today/%1$s%2$s";
private final static String URL = "https://api.bitfinex.com/v1/pubticker/%1$s%2$s";
private final static HashMap<String, CharSequence[]> CURRENCY_PAIRS = new LinkedHashMap<String, CharSequence[]>();
static {
CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{
Expand All @@ -26,43 +27,25 @@ public class Bitfinex extends Market {
Currency.USD,
VirtualCurrency.BTC
});
CURRENCY_PAIRS.put(VirtualCurrency.DRK, new String[]{
Currency.USD,
VirtualCurrency.BTC
});
CURRENCY_PAIRS.put(VirtualCurrency.TH1, new String[]{
VirtualCurrency.BTC
});
}

public Bitfinex() {
super(NAME, TTS_NAME, CURRENCY_PAIRS);
}

@Override
public int getNumOfRequests(CheckerInfo checkerInfo) {
return 2;
}

@Override
public String getUrl(int requestId, CheckerInfo checkerInfo) {
if(requestId==0)
return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase());
else
return String.format(URL_SECOND, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase());
return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase());
}

@Override
protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception {
if(requestId==0) {
ticker.bid = jsonObject.getDouble("bid");
ticker.ask = jsonObject.getDouble("ask");
ticker.last = jsonObject.getDouble("last_price");
ticker.timestamp = (long) (jsonObject.getDouble("timestamp")*TimeUtils.MILLIS_IN_SECOND);
} else {
ticker.vol = jsonObject.getDouble("volume");
ticker.high = jsonObject.getDouble("high");
ticker.low = jsonObject.getDouble("low");
}
ticker.bid = ParseUtils.getDoubleFromString(jsonObject, "bid");
ticker.ask = ParseUtils.getDoubleFromString(jsonObject, "ask");
ticker.vol = ParseUtils.getDoubleFromString(jsonObject, "volume");
ticker.high = ParseUtils.getDoubleFromString(jsonObject, "high");
ticker.low = ParseUtils.getDoubleFromString(jsonObject, "low");
ticker.last = ParseUtils.getDoubleFromString(jsonObject, "last_price");
ticker.timestamp = (long) (jsonObject.getDouble("timestamp")*TimeUtils.MILLIS_IN_SECOND);
}
}
14 changes: 5 additions & 9 deletions DataModule/src/com/mobnetic/coinguardian/model/market/Bitso.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
import java.util.HashMap;
import java.util.LinkedHashMap;

import org.json.JSONException;
import org.json.JSONObject;

import com.mobnetic.coinguardian.model.CheckerInfo;
import com.mobnetic.coinguardian.model.Market;
import com.mobnetic.coinguardian.model.Ticker;
import com.mobnetic.coinguardian.model.currency.Currency;
import com.mobnetic.coinguardian.model.currency.VirtualCurrency;
import com.mobnetic.coinguardian.util.ParseUtils;

public class Bitso extends Market {

Expand All @@ -36,13 +36,9 @@ public String getUrl(int requestId, CheckerInfo checkerInfo) {
@Override
protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception {
final JSONObject pairJsonObject = jsonObject.getJSONObject(checkerInfo.getCurrencyBaseLowerCase()+"_"+checkerInfo.getCurrencyCounterLowerCase());
ticker.bid = getDoubleFromString(pairJsonObject, "buy");
ticker.ask = getDoubleFromString(pairJsonObject, "sell");
ticker.vol = getDoubleFromString(pairJsonObject, "volume");
ticker.last = getDoubleFromString(pairJsonObject, "rate");
}

private double getDoubleFromString(JSONObject jsonObject, String name) throws NumberFormatException, JSONException {
return Double.parseDouble(jsonObject.getString(name));
ticker.bid = ParseUtils.getDoubleFromString(pairJsonObject, "buy");
ticker.ask = ParseUtils.getDoubleFromString(pairJsonObject, "sell");
ticker.vol = ParseUtils.getDoubleFromString(pairJsonObject, "volume");
ticker.last = ParseUtils.getDoubleFromString(pairJsonObject, "rate");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
import java.util.HashMap;
import java.util.LinkedHashMap;

import org.json.JSONException;
import org.json.JSONObject;

import com.mobnetic.coinguardian.model.CheckerInfo;
import com.mobnetic.coinguardian.model.Market;
import com.mobnetic.coinguardian.model.Ticker;
import com.mobnetic.coinguardian.model.currency.Currency;
import com.mobnetic.coinguardian.model.currency.VirtualCurrency;
import com.mobnetic.coinguardian.util.ParseUtils;

public class BtcXIndia extends Market {

Expand Down Expand Up @@ -38,12 +38,8 @@ protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, T
ticker.bid = jsonObject.getDouble("bid");
ticker.ask = jsonObject.getDouble("ask");
ticker.vol = jsonObject.getDouble("total_volume_24h");
ticker.high = getDoubleFromString(jsonObject, "high");
ticker.low = getDoubleFromString(jsonObject, "low");
ticker.high = ParseUtils.getDoubleFromString(jsonObject, "high");
ticker.low = ParseUtils.getDoubleFromString(jsonObject, "low");
ticker.last = jsonObject.getDouble("last_traded_price");
}

private double getDoubleFromString(JSONObject jsonObject, String name) throws NumberFormatException, JSONException {
return Double.parseDouble(jsonObject.getString(name));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
import java.util.Locale;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.mobnetic.coinguardian.model.CheckerInfo;
import com.mobnetic.coinguardian.model.CurrencyPairInfo;
import com.mobnetic.coinguardian.model.Market;
import com.mobnetic.coinguardian.model.Ticker;
import com.mobnetic.coinguardian.util.ParseUtils;

public class Cryptonit extends Market {

Expand All @@ -33,17 +33,14 @@ protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, T
final JSONObject rateJsonObject = jsonObject.getJSONObject("rate");
final JSONObject volumeJsonObject = jsonObject.getJSONObject("volume");

ticker.bid = getDoubleFromString(rateJsonObject, "bid");
ticker.ask = getDoubleFromString(rateJsonObject, "ask");
if(volumeJsonObject.has(checkerInfo.getCurrencyBase()))
ticker.vol = getDoubleFromString(volumeJsonObject, checkerInfo.getCurrencyBase());
ticker.high = getDoubleFromString(rateJsonObject, "high");
ticker.low = getDoubleFromString(rateJsonObject, "low");
ticker.last = getDoubleFromString(rateJsonObject, "last");
}

private double getDoubleFromString(JSONObject jsonObject, String name) throws NumberFormatException, JSONException {
return Double.parseDouble(jsonObject.getString(name));
ticker.bid = ParseUtils.getDoubleFromString(rateJsonObject, "bid");
ticker.ask = ParseUtils.getDoubleFromString(rateJsonObject, "ask");
if(volumeJsonObject.has(checkerInfo.getCurrencyBase())) {
ticker.vol = ParseUtils.getDoubleFromString(volumeJsonObject, checkerInfo.getCurrencyBase());
}
ticker.high = ParseUtils.getDoubleFromString(rateJsonObject, "high");
ticker.low = ParseUtils.getDoubleFromString(rateJsonObject, "low");
ticker.last = ParseUtils.getDoubleFromString(rateJsonObject, "last");
}

// ====================
Expand Down
Loading