Skip to content

Commit

Permalink
Merge pull request #11 from aneonex/features/new-exchanges
Browse files Browse the repository at this point in the history
Added new exchanges and removed legacy
Alexander Biryukov authored Oct 10, 2020

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
2 parents 979c949 + 8225855 commit de18a15
Showing 45 changed files with 434 additions and 2,099 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.1'
classpath 'com.android.tools.build:gradle:4.0.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Original file line number Diff line number Diff line change
@@ -17,11 +17,11 @@ object MarketsConfig {
addMarket(Kraken())
addMarket(Bitfinex())
addMarket(Okcoin())
addMarket(Cryptsy())
// addMarket(Cryptsy())
addMarket(Coinbase())
// addMarket(Vircurex())
// addMarket(Fxbtc())
addMarket(Bter())
addMarket(GateIo())
// addMarket(Justcoin())
addMarket(Btcturk())
// addMarket(Coinse())
@@ -30,60 +30,59 @@ object MarketsConfig {
addMarket(CexIO())
// addMarket(Virtex())
addMarket(Huobi())
addMarket(VaultOfSatoshi())
// addMarket(VaultOfSatoshi())
// addMarket(CoinMarketIO())
addMarket(McxNOW())
// addMarket(McxNOW())
// addMarket(CryptoTrade())
addMarket(MintPal())
// addMarket(MintPal())
addMarket(CoinJar())
addMarket(Poloniex())
// addMarket(Winkdex())
addMarket(BitX())
addMarket(CCex())
addMarket(Bitorado())
addMarket(CryptoRush())
// addMarket(CCex())
// addMarket(Bitorado())
addMarket(CoinDesk())
addMarket(Koinim())
// addMarket(FybSE())
addMarket(FybSG())
addMarket(Prelude())
// addMarket(Prelude())
addMarket(BitKonan())
addMarket(BitTrex())
addMarket(Comkort())
addMarket(Bittrex())
// addMarket(Comkort())
addMarket(Bit2c())
addMarket(CryptoAltex())
// addMarket(CryptoAltex())
addMarket(BtcMarkets())
addMarket(Bleutrade())
addMarket(ShareXcoin())
// addMarket(ShareXcoin())
// addMarket(Unisend())
addMarket(BitcoinVenezuela())
addMarket(Korbit())
addMarket(CoinTree())
addMarket(Cryptonit())
// addMarket(Cryptonit())
addMarket(LakeBTC())
addMarket(BitMaszyna())
// addMarket(Zaydo())
addMarket(AllCoin())
// addMarket(AllCoin())
addMarket(Ripio())
// addMarket(DolarBlueNet())
addMarket(CoinSwap())
// addMarket(CoinSwap())
addMarket(Paymium())
addMarket(Bitso())
addMarket(Cryptoine())
// addMarket(Cryptoine())
addMarket(BitcoinToYou())
addMarket(BitexLa())
addMarket(ItBit())
addMarket(BitcoinCoId())
addMarket(HitBtc())
// addMarket(CleverCoin())
addMarket(BitBay())
addMarket(QuadrigaCX())
// addMarket(QuadrigaCX())
addMarket(CoinMateIO())
addMarket(Buttercoin())
// addMarket(Buttercoin())
// addMarket(CoinTraderNet())
addMarket(LocalBitcoins())
addMarket(Cryptopia())
addMarket(Igot())
// addMarket(Cryptopia())
// addMarket(Igot())
// addMarket(Mexbt())
addMarket(Vaultoro())
addMarket(BitxCom())
@@ -93,18 +92,17 @@ object MarketsConfig {
addMarket(YoBit())
addMarket(ShapeShift())
// addMarket(BitoEx())
addMarket(OKCoinFutures())
// addMarket(new FoscEx());
// addMarket(CoinSecure())
addMarket(Dashcurex())
// addMarket(Dashcurex())
addMarket(Quoine())
addMarket(Livecoin())
addMarket(Gemini())
addMarket(Coinapult())
addMarket(Btc38())
addMarket(ETHEXIndia())
addMarket(GateCoin())
addMarket(Liqui())
// addMarket(Coinapult())
// addMarket(Btc38())
// addMarket(ETHEXIndia())
// addMarket(GateCoin())
// addMarket(Liqui())
addMarket(ChileBit())
addMarket(SurBitcoin())
addMarket(VBtc())
@@ -117,25 +115,30 @@ object MarketsConfig {
addMarket(Bithumb())
addMarket(Coinsph())
addMarket(Bl3p())
addMarket(SurBtc())
// addMarket(SurBtc())
addMarket(CoinFloor())
addMarket(Lykke())
addMarket(Coinnest())
// addMarket(Coinnest())
addMarket(Braziliex())
addMarket(Abucoins())
addMarket(Zebpay())
// addMarket(Zebpay())
addMarket(Paribu())
addMarket(SatoshiTango())
addMarket(Koinex())
// addMarket(Koinex())
// addMarket(new Unocoin());
addMarket(BlinkTrade())
addMarket(Exmo())
addMarket(Binance())
addMarket(Kucoin())
addMarket(BitcoinTrade())
addMarket(OmniTrade())
addMarket(Coinome())
addMarket(Nocks())
// addMarket(Coinome())
// addMarket(Nocks())
addMarket(BitoPro())
addMarket(Ftx())
addMarket(Okex())
addMarket(OkexFutures())
addMarket(ZgCom())
addMarket(Upbit())
}
}
Original file line number Diff line number Diff line change
@@ -6,12 +6,15 @@ object Futures {
// const val CONTRACT_TYPE_MONTHLY = 2
// const val CONTRACT_TYPE_BIMONTHLY = 3
const val CONTRACT_TYPE_QUARTERLY = 4
const val CONTRACT_TYPE_BIQUARTERLY = 5

private val CONTRACT_TYPE_SHORT_NAMES = arrayOf(
"1W",
"2W",
"1M",
"2M",
"3M"
"3M",
"6M"
)

@kotlin.jvm.JvmStatic
Original file line number Diff line number Diff line change
@@ -180,6 +180,7 @@ object VirtualCurrency {
const val LEAF = "LEAF"
const val LGBT = "LGBT"
const val LGC = "LGC"
const val LINK = "LINK"
const val LK7 = "LK7"
const val LKY = "LKY"
const val LMC = "LMC"

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ import com.aneonex.bitcoinchecker.datamodule.model.Market
import com.aneonex.bitcoinchecker.datamodule.model.Ticker
import org.json.JSONObject

class BitTrex : Market(NAME, TTS_NAME, null) {
class Bittrex : Market(NAME, TTS_NAME, null) {
override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String {
return String.format(URL, checkerInfo.currencyCounter, checkerInfo.currencyBase) // reversed
}
@@ -39,8 +39,8 @@ class BitTrex : Market(NAME, TTS_NAME, null) {
}

companion object {
private const val NAME = "BitTrex"
private const val TTS_NAME = "Bit Trex"
private const val NAME = "Bittrex"
private const val TTS_NAME = NAME
private const val URL = "https://bittrex.com/api/v1.1/public/getticker?market=%1\$s-%2\$s"
private const val URL_CURRENCY_PAIRS = "https://bittrex.com/api/v1.1/public/getmarkets"
}

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.aneonex.bitcoinchecker.datamodule.model.market

import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo
import com.aneonex.bitcoinchecker.datamodule.model.CurrencyPairInfo
import com.aneonex.bitcoinchecker.datamodule.model.Market
import com.aneonex.bitcoinchecker.datamodule.model.Ticker
import org.json.JSONObject

class Ftx : Market(NAME, TTS_NAME, null) {
companion object {
private const val NAME = "FTX"
private const val TTS_NAME = "FTX"
private const val URL = "https://ftx.com/api/markets/%1\$s"
private const val URL_CURRENCY_PAIRS = "https://ftx.com/api/markets"
}

override fun getCurrencyPairsUrl(requestId: Int): String? {
return URL_CURRENCY_PAIRS
}

override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList<CurrencyPairInfo>) {
val markets = jsonObject.getJSONArray("result")
for(i in 0 until markets.length()){
val market = markets.getJSONObject(i)

if(market.getString("type") != "spot") continue

pairs.add( CurrencyPairInfo(
market.getString("baseCurrency"),
market.getString("quoteCurrency"),
market.getString("name"),
))
}

}

override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String {
return String.format(URL, checkerInfo.currencyPairId)
}

override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) {
val market = jsonObject.getJSONObject("result")

ticker.bid = market.getDouble("bid")
ticker.ask = market.getDouble("ask")
ticker.last = market.getDouble("last")

if(ticker.last > 0)
ticker.vol = market.getDouble("quoteVolume24h") / ticker.last
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.aneonex.bitcoinchecker.datamodule.model.market

import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo
import com.aneonex.bitcoinchecker.datamodule.model.CurrencyPairInfo
import com.aneonex.bitcoinchecker.datamodule.model.Market
import com.aneonex.bitcoinchecker.datamodule.model.Ticker
import org.json.JSONArray
import org.json.JSONObject

class GateIo : Market(NAME, TTS_NAME, null) {

companion object {
private const val NAME = "Gate.io"
private const val TTS_NAME = "Gate io"
private const val URL = "https://api.gateio.ws/api/v4/spot/tickers?currency_pair=%1\$s"
private const val URL_CURRENCY_PAIRS = "https://api.gateio.ws/api/v4/spot/currency_pairs"
}

override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String {
return String.format(URL, checkerInfo.currencyPairId)
}

override fun parseTicker(requestId: Int, responseString: String, ticker: Ticker, checkerInfo: CheckerInfo) {
val jsonArray = JSONArray(responseString)
if(jsonArray.length() < 1) throw ArrayIndexOutOfBoundsException("No data")

val jsonObject = jsonArray.getJSONObject(0)

ticker.bid = jsonObject.getDouble("highest_bid")
ticker.ask = jsonObject.getDouble("lowest_ask")
ticker.vol = jsonObject.getDouble("base_volume")
ticker.high = jsonObject.getDouble("high_24h")
ticker.low = jsonObject.getDouble("low_24h")
ticker.last = jsonObject.getDouble("last")
}

// ====================
// Get currency pairs
// ====================
override fun getCurrencyPairsUrl(requestId: Int): String? {
return URL_CURRENCY_PAIRS
}

@Throws(Exception::class)
override fun parseCurrencyPairs(requestId: Int, responseString: String, pairs: MutableList<CurrencyPairInfo>) {
val jsonArray = JSONArray(responseString)

for (i in 0 until jsonArray.length()) {
val pairJson = jsonArray.getJSONObject(i)

if(pairJson.getString("trade_status") != "tradable") continue

pairs.add(CurrencyPairInfo(
pairJson.getString("base"),
pairJson.getString("quote"),
pairJson.getString("id")
))
}
}
}

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.aneonex.bitcoinchecker.datamodule.model.market

import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo
import com.aneonex.bitcoinchecker.datamodule.model.CurrencyPairInfo
import com.aneonex.bitcoinchecker.datamodule.model.Market
import com.aneonex.bitcoinchecker.datamodule.model.Ticker
import org.json.JSONArray
import org.json.JSONObject

class Okex : Market(NAME, TTS_NAME, null) {
companion object {
private const val NAME = "OKEx"
private const val TTS_NAME = "OKEX"
private const val URL = "https://www.okex.com/api/spot/v3/instruments/%1\$s/ticker"
private const val URL_CURRENCY_PAIRS = "https://www.okex.com/api/spot/v3/instruments"
}

override fun getCurrencyPairsUrl(requestId: Int): String? {
return URL_CURRENCY_PAIRS
}

@Throws(Exception::class)
override fun parseCurrencyPairs(requestId: Int, responseString: String, pairs: MutableList<CurrencyPairInfo>) {
val pairsArray = JSONArray(responseString)
for (i in 0 until pairsArray.length()) {
val pairJson = pairsArray.getJSONObject(i)
pairs.add(CurrencyPairInfo(
pairJson.getString("base_currency"),
pairJson.getString("quote_currency"),
pairJson.getString("instrument_id")))
}
}

override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String {
var pairId = checkerInfo.currencyPairId
if(pairId == null){
pairId = "${checkerInfo.currencyBase}-${checkerInfo.currencyCounter}"
}
return String.format(URL, pairId)
}

@Throws(Exception::class)
override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) {
// val tickerJsonObject = jsonObject.getJSONObject("ticker")
ticker.bid = jsonObject.getDouble("bid")
ticker.ask = jsonObject.getDouble("ask")
ticker.vol = jsonObject.getDouble("base_volume_24h")
ticker.high = jsonObject.getDouble("high_24h")
ticker.low = jsonObject.getDouble("low_24h")
ticker.last = jsonObject.getDouble("last")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package com.aneonex.bitcoinchecker.datamodule.model.market

import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo
import com.aneonex.bitcoinchecker.datamodule.model.Futures
import com.aneonex.bitcoinchecker.datamodule.model.FuturesMarket
import com.aneonex.bitcoinchecker.datamodule.model.Ticker
import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency
import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap
import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency
import org.json.JSONObject
import java.time.ZonedDateTime

class OkexFutures : FuturesMarket(NAME, TTS_NAME, CURRENCY_PAIRS, CONTRACT_TYPES) {
companion object {
private const val NAME = "OKEx Futures"
private const val TTS_NAME = "Okex Futures"
private const val URL = "https://www.okex.com/api/futures/v3/instruments/%1\$s/ticker"
private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap()
private val CONTRACT_TYPES = intArrayOf(
Futures.CONTRACT_TYPE_WEEKLY,
Futures.CONTRACT_TYPE_BIWEEKLY,
Futures.CONTRACT_TYPE_QUARTERLY,
Futures.CONTRACT_TYPE_BIQUARTERLY
)

init {
CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf(
Currency.USD,
VirtualCurrency.USDT
)
CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf(
Currency.USD,
VirtualCurrency.USDT
)
CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf(
Currency.USD,
VirtualCurrency.USDT
)
CURRENCY_PAIRS[VirtualCurrency.EOS] = arrayOf(
Currency.USD,
VirtualCurrency.USDT
)
CURRENCY_PAIRS[VirtualCurrency.XRP] = arrayOf(
Currency.USD,
VirtualCurrency.USDT
)
CURRENCY_PAIRS[VirtualCurrency.BCH] = arrayOf(
Currency.USD,
VirtualCurrency.USDT
)
CURRENCY_PAIRS[VirtualCurrency.TRX] = arrayOf(
Currency.USD,
VirtualCurrency.USDT
)
CURRENCY_PAIRS[VirtualCurrency.LINK] = arrayOf(
Currency.USD,
VirtualCurrency.USDT
)
}
}

public override fun getUrl(requestId: Int, checkerInfo: CheckerInfo, contractType: Int): String {
return String.format(URL, getInstrumentId(checkerInfo.currencyBase, checkerInfo.currencyCounter, contractType))
}

private fun getInstrumentId(currencyBase: String, currencyCounter: String, contractType: Int): String {
val suffix = when (contractType) {
Futures.CONTRACT_TYPE_WEEKLY -> "201009"
Futures.CONTRACT_TYPE_BIWEEKLY -> "201016"
Futures.CONTRACT_TYPE_QUARTERLY -> "201225"
Futures.CONTRACT_TYPE_BIQUARTERLY -> "210326"
else -> throw ArrayIndexOutOfBoundsException("Unknown contract type: $contractType")
}

return "$currencyBase-$currencyCounter-$suffix"
}

override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) {
ticker.bid = jsonObject.getDouble("best_bid")
ticker.ask = jsonObject.getDouble("best_ask")
ticker.vol = jsonObject.getDouble("volume_token_24h")
ticker.high = jsonObject.getDouble("high_24h")
ticker.low = jsonObject.getDouble("low_24h")
ticker.last = jsonObject.getDouble("last")
ticker.timestamp = ZonedDateTime.parse(jsonObject.getString("timestamp")).toEpochSecond()
}
}

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.aneonex.bitcoinchecker.datamodule.model.market

import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo
import com.aneonex.bitcoinchecker.datamodule.model.CurrencyPairInfo
import com.aneonex.bitcoinchecker.datamodule.model.Market
import com.aneonex.bitcoinchecker.datamodule.model.Ticker
import org.json.JSONArray

class Upbit : Market(NAME, TTS_NAME, null) {
companion object {
private const val NAME = "Upbit"
private const val TTS_NAME = "Up bit"
private const val URL = "https://api.upbit.com/v1/ticker?markets=%1\$s"
private const val URL_CURRENCY_PAIRS = "https://api.upbit.com/v1/market/all?isDetails=false"
}

override fun getCurrencyPairsUrl(requestId: Int): String? {
return URL_CURRENCY_PAIRS
}

override fun parseCurrencyPairs(requestId: Int, responseString: String, pairs: MutableList<CurrencyPairInfo>) {
val markets = JSONArray(responseString)

for(i in 0 until markets.length()){
val market = markets.getJSONObject(i)

val marketId = market.getString("market")
val assets = marketId.split("-")
if(assets.size != 2) continue

pairs.add( CurrencyPairInfo(
assets[1],
assets[0],
marketId,
))
}
}

override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String {
return String.format(URL, checkerInfo.currencyPairId)
}

override fun parseTicker(requestId: Int, responseString: String, ticker: Ticker, checkerInfo: CheckerInfo) {
val jsonArray = JSONArray(responseString)

jsonArray.getJSONObject(0).apply {
ticker.high = getDouble("high_price")
ticker.low = getDouble("low_price")
ticker.last = getDouble("trade_price")
ticker.vol = getDouble("acc_trade_volume")
ticker.timestamp = getLong("timestamp")
}
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.aneonex.bitcoinchecker.datamodule.model.market

import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo
import com.aneonex.bitcoinchecker.datamodule.model.CurrencyPairInfo
import com.aneonex.bitcoinchecker.datamodule.model.Market
import com.aneonex.bitcoinchecker.datamodule.model.Ticker
import org.json.JSONObject

class ZgCom : Market(NAME, TTS_NAME, null) {
companion object {
private const val NAME = "ZG.com"
private const val TTS_NAME = "ZG dot com"
private const val URL = "https://api.zg.com/openapi/quote/v1/ticker/24hr?symbol=%1\$s"
private const val URL_CURRENCY_PAIRS = "https://api.zg.com/openapi/v1/brokerInfo"
}

override fun getCurrencyPairsUrl(requestId: Int): String? {
return URL_CURRENCY_PAIRS
}

override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList<CurrencyPairInfo>) {
val markets = jsonObject.getJSONArray("symbols")
for(i in 0 until markets.length()){
val market = markets.getJSONObject(i)

if(market.getString("status") != "TRADING") continue

pairs.add( CurrencyPairInfo(
market.getString("baseAsset"),
market.getString("quoteAsset"),
market.getString("symbol"),
))
}
}

override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String {
return String.format(URL, checkerInfo.currencyPairId)
}

override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) {
jsonObject.apply {
ticker.bid = getDouble("bestBidPrice")
ticker.ask = getDouble("bestAskPrice")
ticker.high = getDouble("highPrice")
ticker.low = getDouble("lowPrice")
ticker.last = getDouble("lastPrice")
ticker.vol = getDouble("volume")
ticker.timestamp = getLong("time")
}
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.aneonex.bitcoinchecker.tester

import android.app.Activity
import android.content.Context
import android.os.Bundle
import android.text.SpannableStringBuilder
import android.text.TextUtils
import android.util.Log
import android.view.View
import android.widget.*
@@ -26,12 +26,13 @@ import com.aneonex.bitcoinchecker.tester.util.MarketCurrencyPairsStore
import com.aneonex.bitcoinchecker.tester.volley.CheckerErrorParsedError
import com.aneonex.bitcoinchecker.tester.volley.CheckerVolleyMainRequest
import com.aneonex.bitcoinchecker.tester.volley.CheckerVolleyMainRequest.TickerWrapper
import com.aneonex.bitcoinchecker.tester.volley.DynamicCurrencyPairsVolleyMainRequest
import com.aneonex.bitcoinchecker.tester.volley.generic.ResponseErrorListener
import com.aneonex.bitcoinchecker.tester.volley.generic.ResponseListener
import java.util.*

class MainActivity : Activity() {
private val TAG = MainActivity::class.simpleName
private val tag = MainActivity::class.simpleName

private inner class MarketEntry(var key: String, var name: String) : Comparable<MarketEntry> {
override fun toString(): String {
@@ -80,7 +81,7 @@ class MainActivity : Activity() {
refreshFuturesContractTypeSpinner(market)
showResultView(true)
marketSpinner.onItemSelectedListener = object : OnItemSelectedListener {
override fun onItemSelected(arg0: AdapterView<*>?, arg1: View, arg2: Int, arg3: Long) {
override fun onItemSelected(arg0: AdapterView<*>?, arg1: View?, arg2: Int, arg3: Long) {
val selectedMarket = selectedMarket
currencyPairsMapHelper = CurrencyPairsMapHelper(MarketCurrencyPairsStore.getPairsForMarket(this@MainActivity, selectedMarket.key))
refreshCurrencySpinners(selectedMarket)
@@ -101,7 +102,7 @@ class MainActivity : Activity() {
}.show()
}
currencyBaseSpinner.onItemSelectedListener = object : OnItemSelectedListener {
override fun onItemSelected(arg0: AdapterView<*>?, arg1: View, arg2: Int, arg3: Long) {
override fun onItemSelected(arg0: AdapterView<*>?, arg1: View?, arg2: Int, arg3: Long) {
refreshCurrencyCounterSpinner(selectedMarket)
}

@@ -238,7 +239,7 @@ class MainActivity : Activity() {
if (error is CheckerErrorParsedError) {
errorMsg = error.errorMsg
}
if (TextUtils.isEmpty(errorMsg)) errorMsg = CheckErrorsUtils.parseVolleyErrorMsg(this@MainActivity, error)
if (errorMsg.isNullOrEmpty()) errorMsg = CheckErrorsUtils.parseVolleyErrorMsg(this@MainActivity, error)
handleNewResult(checkerInfo, null, url, requestHeaders, networkResponse, responseString, errorMsg, error)
}
})
@@ -278,18 +279,20 @@ class MainActivity : Activity() {
Toast.makeText(this, "Test all", Toast.LENGTH_SHORT).show()

for (market in MarketsConfig.MARKETS.values) {
Log.d(TAG, "*** Checking: ${market.name} (${market.key}) ***")
Log.d(tag, "*** Checking: ${market.name} (${market.key}) ***")

if(market.currencyPairs.isNullOrEmpty()){
Log.d(TAG, "No pairs")
Log.d(tag, "No pairs, queue updating...")
requestQueue.add(createRequestDynamicCurrencyPairs(this, market))

continue
}

val map = market.currencyPairs!!
val currencyBase = map.keys.first()
val currencyCounter = map[currencyBase]!!.first()

Log.d(TAG, "First pair: $currencyBase/$currencyCounter")
Log.d(tag, "First pair: $currencyBase/$currencyCounter")

val currencyPairsMapHelper = CurrencyPairsMapHelper(MarketCurrencyPairsStore.getPairsForMarket(this, market.key))
val pairId = currencyPairsMapHelper.getCurrencyPairId(currencyBase, currencyCounter)
@@ -302,38 +305,49 @@ class MainActivity : Activity() {
val request: Request<*> = CheckerVolleyMainRequest(market, checkerInfo,
object : ResponseListener<TickerWrapper?>() {
override fun onResponse(url: String?, requestHeaders: Map<String, String>?, networkResponse: NetworkResponse?, responseString: String?, response: TickerWrapper?) {
handleTestExchange(market.name, checkerInfo, response?.ticker, url, requestHeaders, networkResponse, responseString, null, null)
handleTestExchange(market.name, url, null)
}
}, object : ResponseErrorListener() {
override fun onErrorResponse(url: String?, requestHeaders: Map<String, String>?, networkResponse: NetworkResponse?, responseString: String?, error: VolleyError) {
error.printStackTrace()
var errorMsg: String? = null
if (error is CheckerErrorParsedError) {
errorMsg = error.errorMsg
}
if (TextUtils.isEmpty(errorMsg)) errorMsg = CheckErrorsUtils.parseVolleyErrorMsg(this@MainActivity, error)
handleTestExchange(market.name, checkerInfo, null, url, requestHeaders, networkResponse, responseString, errorMsg, error)
// error.printStackTrace()
handleTestExchange(market.name, url, error)
}
})
requestQueue.add(request)
}
}

private fun handleTestExchange(marketName: String, checkerInfo: CheckerInfo, ticker: Ticker?, url: String?, requestHeaders: Map<String, String>?, networkResponse: NetworkResponse?, rawResponse: String?, errorMsg: String?, error: VolleyError?) {
private fun handleTestExchange(marketName: String, url: String?, error: VolleyError?) {
// showResultView(true)

val sb = StringBuilder()

sb.append("TEST_RESULT [$marketName]: ")

if(ticker != null)
if(error == null)
sb.append("Success")
else
sb.append("FAILED")

sb.append(": ")
sb.append(url ?: "Unknown uri")

Log.d(TAG, sb.toString())
if(error?.cause != null)
sb.append("\nDetails: ${error.cause}")

Log.d(tag, sb.toString())
}

private fun createRequestDynamicCurrencyPairs(context: Context, market: Market): DynamicCurrencyPairsVolleyMainRequest {
return DynamicCurrencyPairsVolleyMainRequest(context, market,
object : ResponseListener<CurrencyPairsMapHelper?>() {
override fun onResponse(url: String?, requestHeaders: Map<String, String>?, networkResponse: NetworkResponse?, responseString: String?, response: CurrencyPairsMapHelper?) {
handleTestExchange(market.name, url, null)
}
}, object : ResponseErrorListener() {
override fun onErrorResponse(url: String?, requestHeaders: Map<String, String>?, networkResponse: NetworkResponse?, responseString: String?, error: VolleyError) {
handleTestExchange(market.name, url, error)
}
})
}
}

0 comments on commit de18a15

Please sign in to comment.