package mobi.boilr.libdynticker.exchanges; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.codehaus.jackson.JsonNode; import mobi.boilr.libdynticker.core.Exchange; import mobi.boilr.libdynticker.core.Pair; public final class GatecoinExchange extends Exchange { public GatecoinExchange(long expiredPeriod) { super("Gatecoin", expiredPeriod); } @Override protected List<Pair> getPairsFromAPI() throws IOException { List<Pair> pairs = new ArrayList<Pair>(); JsonNode node = readJsonFromUrl("https://api.gatecoin.com/Public/LiveTickers"); if(node.get("responseStatus").get("message").asText().equals("OK")) { for(JsonNode ticker : node.get("tickers")) { String currPair = ticker.get("currencyPair").asText(); pairs.add(new Pair(currPair.substring(0, 3), currPair.substring(3, 6))); } } return pairs; } @Override protected String getTicker(Pair pair) throws IOException { // https://api.gatecoin.com/Public/Transactions/BTCEUR?count=1 JsonNode node = readJsonFromUrl("https://api.gatecoin.com/Public/Transactions/" + pair.getCoin() + pair.getExchange() + "?count=1"); String message = node.get("responseStatus").get("message").asText(); if(message.equals("OK")) return parseTicker(node, pair); else throw new IOException(message); } @Override public String parseTicker(JsonNode node, Pair pair) throws IOException { JsonNode transactions = node.get("transactions"); if(transactions.size() > 0) return transactions.get(0).get("price").asText(); else return "NaN"; } }