package org.ripple.power.txns; import java.util.Calendar; import org.json.JSONArray; import org.ripple.power.utils.DateUtils; import org.ripple.power.utils.HttpRequest; public class CoinmarketcapAPI { public static Calendar getCoinmarketcapCalendar(int offsetDay) { Calendar cal = DateUtils.getUTCCalendar(); if (offsetDay != 0) { cal.add(Calendar.DATE, offsetDay); } cal.set(Calendar.HOUR, 10); cal.set(Calendar.SECOND, 9); cal.set(Calendar.MINUTE, 4); cal.set(Calendar.MILLISECOND, 0); return cal; } public static JSONArray getCoinmarketcapVolume(String coinName, String model) { return getCoinmarketcap(String.format( "http://coinmarketcap.com/datapoints/%s/volume", coinName), model); } public static JSONArray getCoinmarketcapUSD(String coinName, String model) { return getCoinmarketcap(String.format( "http://coinmarketcap.com/datapoints/%s/price_usd", coinName), model); } public static JSONArray getCoinmarketcapBTC(String coinName, String model) { return getCoinmarketcap(String.format( "http://coinmarketcap.com/datapoints/%s/price_btc", coinName), model); } public static JSONArray getCoinmarketcapMarketCap(String coinName, String model) { return getCoinmarketcap( String.format( "http://coinmarketcap.com/datapoints/%s/market_cap_by_available_supply", coinName), model); } public static JSONArray getCoinmarketcapVolume(String coinName, int day) { return getCoinmarketcap(String.format( "http://coinmarketcap.com/datapoints/%s/volume", coinName), day); } public static JSONArray getCoinmarketcapUSD(String coinName, int day) { return getCoinmarketcap(String.format( "http://coinmarketcap.com/datapoints/%s/price_usd", coinName), day); } public static JSONArray getCoinmarketcapBTC(String coinName, int day) { return getCoinmarketcap(String.format( "http://coinmarketcap.com/datapoints/%s/price_btc", coinName), day); } public static JSONArray getCoinmarketcapMarketCap(String coinName, int day) { return getCoinmarketcap( String.format( "http://coinmarketcap.com/datapoints/%s/market_cap_by_available_supply", coinName), day); } public static JSONArray getCoinmarketcap(String url, int day) { long startTime = getCoinmarketcapCalendar(-day).getTimeInMillis(); long endTime = getCoinmarketcapCalendar(0).getTimeInMillis(); try { HttpRequest request = HttpRequest.get(url + String.format("/%s/%s/", startTime, endTime)); request.acceptGzipEncoding(); if (request.ok()) { request.uncompress(true); return new JSONArray(request.body()); } } catch (Exception ex) { return null; } return null; } public static JSONArray getCoinmarketcap(String url, String model) { long startTime = -1; long endTime = getCoinmarketcapCalendar(0).getTimeInMillis(); switch (model) { case "1d": startTime = getCoinmarketcapCalendar(-1).getTimeInMillis(); break; case "7d": startTime = getCoinmarketcapCalendar(-7).getTimeInMillis(); break; case "1m": startTime = getCoinmarketcapCalendar(-30).getTimeInMillis(); break; case "3m": startTime = getCoinmarketcapCalendar(-(30 * 3)).getTimeInMillis(); break; case "1y": startTime = getCoinmarketcapCalendar(-365).getTimeInMillis(); break; default: break; } if (startTime == -1) { startTime = endTime; } try { HttpRequest request = HttpRequest.get(url + String.format("/%s/%s/", startTime, endTime)); request.acceptGzipEncoding(); if (request.ok()) { request.uncompress(true); return new JSONArray(request.body()); } } catch (Exception ex) { return null; } return null; } }