From 1aac1e11a241f4fb6914f9e5d35385b48f8a650a Mon Sep 17 00:00:00 2001 From: Alexander Biryukov Date: Sat, 5 Sep 2020 13:41:07 +0300 Subject: [PATCH] Migrate code to Kotlin lang (#5) * Migration to Kotlin (1 of 2): Code converted and refactored * Migration to Kotlin (2 of 2): Renamed extensions .java to .kt * Rebranding modules and namespaces * Fix code after kotlin migration * More fixes after kotlin migration * Fixed lint warnings --- build.gradle | 2 + dataModule/build.gradle | 11 +- dataModule/src/main/AndroidManifest.xml | 8 +- .../datamodule/config/MarketsConfig.kt | 140 ++++++ .../datamodule/config/Settings.kt | 5 + .../datamodule/model/CheckerInfo.kt | 11 + .../datamodule/model/CurrencyPairInfo.kt | 9 + .../model/CurrencyPairsListWithDate.kt | 8 + .../datamodule/model/CurrencySubunit.kt | 3 + .../datamodule/model/CurrencySubunitsMap.kt | 13 + .../datamodule/model/Futures.kt | 23 + .../datamodule/model/FuturesMarket.kt | 13 + .../bitcoinchecker/datamodule/model/Market.kt | 98 ++++ .../bitcoinchecker/datamodule/model/Ticker.kt | 32 ++ .../model/currency/CurrenciesSubunits.kt | 22 + .../datamodule/model/currency/Currency.kt | 167 +++++++ .../model/currency/CurrencyPairsMap.kt | 3 + .../model/currency/CurrencySymbols.kt | 54 +++ .../model/currency/VirtualCurrency.kt | 373 ++++++++++++++ .../datamodule/model/market/Abucoins.kt | 50 ++ .../datamodule/model/market/AllCoin.kt | 62 +++ .../datamodule/model/market/Binance.kt | 57 +++ .../datamodule/model/market/Bit2c.kt | 52 ++ .../datamodule/model/market/BitBay.kt | 76 +++ .../datamodule/model/market/BitFlyer.kt | 37 ++ .../datamodule/model/market/BitFlyerFX.kt | 35 ++ .../datamodule/model/market/BitKonan.kt | 46 ++ .../datamodule/model/market/BitMEX.kt | 79 +++ .../datamodule/model/market/BitMaszyna.kt | 41 ++ .../datamodule/model/market/BitTrex.kt | 47 ++ .../datamodule/model/market/BitX.kt | 83 ++++ .../datamodule/model/market/BitcoinCoId.kt | 58 +++ .../datamodule/model/market/BitcoinToYou.kt | 45 ++ .../datamodule/model/market/BitcoinTrade.kt | 45 ++ .../model/market/BitcoinVenezuela.kt | 53 ++ .../datamodule/model/market/BitexLa.kt | 38 ++ .../datamodule/model/market/Bitfinex.kt | 136 ++++++ .../datamodule/model/market/Bithumb.kt | 99 ++++ .../datamodule/model/market/BitoEX.kt | 37 ++ .../datamodule/model/market/Bitorado.kt | 51 ++ .../datamodule/model/market/Bitso.kt | 80 +++ .../datamodule/model/market/Bitstamp.kt | 79 +++ .../datamodule/model/market/BitxCom.kt | 61 +++ .../datamodule/model/market/Bl3p.kt | 42 ++ .../datamodule/model/market/Bleutrade.kt | 65 +++ .../datamodule/model/market/BlinkTrade.kt | 43 ++ .../datamodule/model/market/Braziliex.kt | 51 ++ .../datamodule/model/market/Btc38.kt | 61 +++ .../datamodule/model/market/BtcBox.kt | 38 ++ .../datamodule/model/market/BtcMarkets.kt | 56 +++ .../datamodule/model/market/BtcXIndia.kt | 39 ++ .../datamodule/model/market/Btcturk.kt | 52 ++ .../datamodule/model/market/Bter.kt | 52 ++ .../datamodule/model/market/Buttercoin.kt | 35 ++ .../datamodule/model/market/CCex.kt | 50 ++ .../datamodule/model/market/Campbx.kt | 35 ++ .../datamodule/model/market/CexIO.kt | 77 +++ .../datamodule/model/market/ChileBit.kt | 38 ++ .../datamodule/model/market/CleverCoin.kt | 39 ++ .../datamodule/model/market/CoinDesk.kt | 44 ++ .../datamodule/model/market/CoinFloor.kt | 43 ++ .../datamodule/model/market/CoinJar.kt | 51 ++ .../datamodule/model/market/CoinMarketIO.kt | 78 +++ .../datamodule/model/market/CoinMateIO.kt | 45 ++ .../datamodule/model/market/CoinSecure.kt | 44 ++ .../datamodule/model/market/CoinSwap.kt | 50 ++ .../datamodule/model/market/CoinTraderNet.kt | 42 ++ .../datamodule/model/market/CoinTree.kt | 35 ++ .../datamodule/model/market/Coinapult.kt | 44 ++ .../datamodule/model/market/Coinbase.kt | 70 +++ .../datamodule/model/market/Coinnest.kt | 71 +++ .../datamodule/model/market/Coinome.kt | 52 ++ .../datamodule/model/market/Coinone.kt | 77 +++ .../datamodule/model/market/Coinse.kt | 101 ++++ .../datamodule/model/market/Coinsph.kt | 50 ++ .../datamodule/model/market/Comkort.kt | 60 +++ .../datamodule/model/market/CryptoAltex.kt | 47 ++ .../datamodule/model/market/CryptoRush.kt | 53 ++ .../datamodule/model/market/CryptoTrade.kt | 85 ++++ .../datamodule/model/market/Cryptoine.kt | 57 +++ .../datamodule/model/market/Cryptonit.kt | 58 +++ .../datamodule/model/market/Cryptopia.kt | 60 +++ .../datamodule/model/market/Cryptsy.kt | 224 +++++++++ .../datamodule/model/market/Dashcurex.kt | 47 ++ .../datamodule/model/market/DolarBlueNet.kt | 34 ++ .../datamodule/model/market/ETHEXIndia.kt | 39 ++ .../datamodule/model/market/Exmo.kt | 49 ++ .../datamodule/model/market/Fxbtc.kt | 43 ++ .../datamodule/model/market/FybSE.kt | 35 ++ .../datamodule/model/market/FybSG.kt | 35 ++ .../datamodule/model/market/GateCoin.kt | 63 +++ .../datamodule/model/market/Gemini.kt | 59 +++ .../datamodule/model/market/HitBtc.kt | 51 ++ .../datamodule/model/market/Huobi.kt | 50 ++ .../datamodule/model/market/Igot.kt | 51 ++ .../datamodule/model/market/ItBit.kt | 49 ++ .../datamodule/model/market/Justcoin.kt | 66 +++ .../datamodule/model/market/Koinex.kt | 49 ++ .../datamodule/model/market/Koinim.kt | 44 ++ .../datamodule/model/market/Korbit.kt | 49 ++ .../datamodule/model/market/Kraken.kt | 87 ++++ .../datamodule/model/market/Kucoin.kt | 52 ++ .../datamodule/model/market/LakeBTC.kt | 53 ++ .../datamodule/model/market/Liqui.kt | 60 +++ .../datamodule/model/market/Livecoin.kt | 61 +++ .../datamodule/model/market/LocalBitcoins.kt | 50 ++ .../datamodule/model/market/Lykke.kt | 48 ++ .../datamodule/model/market/McxNOW.kt | 85 ++++ .../datamodule/model/market/Mercado.kt | 47 ++ .../datamodule/model/market/Mexbt.kt | 38 ++ .../datamodule/model/market/MintPal.kt | 54 +++ .../datamodule/model/market/NegocieCoins.kt | 41 ++ .../datamodule/model/market/Nocks.kt | 59 +++ .../datamodule/model/market/OKCoinFutures.kt | 57 +++ .../datamodule/model/market/Okcoin.kt | 49 ++ .../datamodule/model/market/OmniTrade.kt | 50 ++ .../datamodule/model/market/Paribu.kt | 40 ++ .../datamodule/model/market/Paymium.kt | 51 ++ .../datamodule/model/market/Poloniex.kt | 46 ++ .../datamodule/model/market/Prelude.kt | 83 ++++ .../datamodule/model/market/QuadrigaCX.kt | 53 ++ .../datamodule/model/market/Quoine.kt | 58 +++ .../datamodule/model/market/Ripio.kt | 36 ++ .../datamodule/model/market/SatoshiTango.kt | 41 ++ .../datamodule/model/market/ShapeShift.kt | 59 +++ .../datamodule/model/market/ShareXcoin.kt | 49 ++ .../datamodule/model/market/SurBitcoin.kt | 38 ++ .../datamodule/model/market/SurBtc.kt | 52 ++ .../datamodule/model/market/TheRock.kt | 90 ++++ .../datamodule/model/market/Unisend.kt | 36 ++ .../datamodule/model/market/Unknown.kt | 27 ++ .../datamodule/model/market/Unocoin.kt | 35 ++ .../datamodule/model/market/Uphold.kt | 62 +++ .../datamodule/model/market/Urdubit.kt | 42 ++ .../datamodule/model/market/VBtc.kt | 38 ++ .../datamodule/model/market/VaultOfSatoshi.kt | 65 +++ .../datamodule/model/market/Vaultoro.kt | 32 ++ .../datamodule/model/market/Vircurex.kt | 452 +++++++++++++++++ .../datamodule/model/market/Virtex.kt | 54 +++ .../datamodule/model/market/Winkdex.kt | 36 ++ .../datamodule/model/market/YoBit.kt | 59 +++ .../datamodule/model/market/Zaydo.kt | 39 ++ .../datamodule/model/market/Zebpay.kt | 92 ++++ .../model/market/example/MarketExample.kt | 44 ++ .../datamodule/util/CurrencyPairsMapHelper.kt | 64 +++ .../datamodule/util/CurrencyUtils.kt | 19 + .../datamodule/util/FormatUtilsBase.kt | 90 ++++ .../datamodule/util/MarketsConfigUtils.kt | 32 ++ .../datamodule/util/ParseUtils.kt | 11 + .../datamodule/util/TimeUtils.kt | 14 + .../datamodule/util/XmlParserUtils.kt | 33 ++ .../coinguardian/config/MarketsConfig.java | 141 ------ .../coinguardian/config/Settings.java | 7 - .../coinguardian/model/CheckerInfo.java | 25 - .../coinguardian/model/CurrencyPairInfo.java | 36 -- .../model/CurrencyPairsListWithDate.java | 10 - .../coinguardian/model/CurrencySubunit.java | 18 - .../model/CurrencySubunitsMap.java | 14 - .../coinguardian/model/CurrencySymbol.java | 16 - .../mobnetic/coinguardian/model/Futures.java | 26 - .../coinguardian/model/FuturesMarket.java | 21 - .../mobnetic/coinguardian/model/Market.java | 98 ---- .../mobnetic/coinguardian/model/Ticker.java | 25 - .../model/currency/CurrenciesSubunits.java | 25 - .../coinguardian/model/currency/Currency.java | 170 ------- .../model/currency/CurrencySymbols.java | 55 --- .../model/currency/VirtualCurrency.java | 374 -------------- .../coinguardian/model/market/Abucoins.java | 56 --- .../coinguardian/model/market/AllCoin.java | 74 --- .../coinguardian/model/market/Binance.java | 77 --- .../coinguardian/model/market/Bit2c.java | 59 --- .../coinguardian/model/market/BitBay.java | 82 ---- .../coinguardian/model/market/BitFlyer.java | 44 -- .../coinguardian/model/market/BitFlyerFX.java | 41 -- .../coinguardian/model/market/BitKonan.java | 52 -- .../coinguardian/model/market/BitMEX.java | 90 ---- .../coinguardian/model/market/BitMaszyna.java | 47 -- .../coinguardian/model/market/BitTrex.java | 57 --- .../coinguardian/model/market/BitX.java | 99 ---- .../model/market/BitcoinCentralNet.java | 44 -- .../model/market/BitcoinCoId.java | 71 --- .../model/market/BitcoinToYou.java | 52 -- .../model/market/BitcoinTrade.java | 51 -- .../model/market/BitcoinVenezuela.java | 63 --- .../coinguardian/model/market/BitexLa.java | 44 -- .../coinguardian/model/market/Bitfinex.java | 147 ------ .../coinguardian/model/market/Bithumb.java | 110 ----- .../coinguardian/model/market/BitoEX.java | 43 -- .../coinguardian/model/market/Bitorado.java | 66 --- .../coinguardian/model/market/Bitso.java | 93 ---- .../coinguardian/model/market/Bitstamp.java | 85 ---- .../coinguardian/model/market/BitxCom.java | 67 --- .../coinguardian/model/market/Bl3p.java | 49 -- .../coinguardian/model/market/Bleutrade.java | 73 --- .../coinguardian/model/market/BlinkTrade.java | 49 -- .../coinguardian/model/market/Braziliex.java | 64 --- .../coinguardian/model/market/Btc38.java | 73 --- .../coinguardian/model/market/BtcBox.java | 44 -- .../coinguardian/model/market/BtcMarkets.java | 62 --- .../coinguardian/model/market/BtcXIndia.java | 45 -- .../coinguardian/model/market/Btcturk.java | 59 --- .../coinguardian/model/market/Bter.java | 64 --- .../coinguardian/model/market/Buttercoin.java | 41 -- .../coinguardian/model/market/CCex.java | 65 --- .../coinguardian/model/market/Campbx.java | 41 -- .../coinguardian/model/market/CexIO.java | 88 ---- .../coinguardian/model/market/ChileBit.java | 44 -- .../coinguardian/model/market/CleverCoin.java | 44 -- .../coinguardian/model/market/CoinDesk.java | 54 --- .../coinguardian/model/market/CoinFloor.java | 48 -- .../coinguardian/model/market/CoinJar.java | 61 --- .../model/market/CoinMarketIO.java | 84 ---- .../coinguardian/model/market/CoinMateIO.java | 51 -- .../coinguardian/model/market/CoinSecure.java | 50 -- .../coinguardian/model/market/CoinSwap.java | 57 --- .../model/market/CoinTraderNet.java | 49 -- .../coinguardian/model/market/CoinTree.java | 41 -- .../coinguardian/model/market/Coinapult.java | 51 -- .../coinguardian/model/market/Coinbase.java | 79 --- .../coinguardian/model/market/Coinnest.java | 78 --- .../coinguardian/model/market/Coinome.java | 62 --- .../coinguardian/model/market/Coinone.java | 86 ---- .../coinguardian/model/market/Coinse.java | 111 ----- .../coinguardian/model/market/Coinsph.java | 59 --- .../coinguardian/model/market/Comkort.java | 71 --- .../model/market/CryptoAltex.java | 57 --- .../coinguardian/model/market/CryptoRush.java | 70 --- .../model/market/CryptoTrade.java | 91 ---- .../coinguardian/model/market/Cryptoine.java | 72 --- .../coinguardian/model/market/Cryptonit.java | 70 --- .../coinguardian/model/market/Cryptopia.java | 70 --- .../coinguardian/model/market/Cryptsy.java | 238 --------- .../coinguardian/model/market/Dashcurex.java | 53 -- .../model/market/DolarBlueNet.java | 40 -- .../coinguardian/model/market/ETHEXIndia.java | 44 -- .../coinguardian/model/market/Exmo.java | 63 --- .../coinguardian/model/market/FoscEx.java | 50 -- .../coinguardian/model/market/Fxbtc.java | 49 -- .../coinguardian/model/market/FybSE.java | 41 -- .../coinguardian/model/market/FybSG.java | 41 -- .../coinguardian/model/market/GateCoin.java | 74 --- .../coinguardian/model/market/Gemini.java | 71 --- .../coinguardian/model/market/HitBtc.java | 63 --- .../coinguardian/model/market/Huobi.java | 59 --- .../coinguardian/model/market/Igot.java | 60 --- .../coinguardian/model/market/ItBit.java | 56 --- .../coinguardian/model/market/Justcoin.java | 72 --- .../coinguardian/model/market/Koinex.java | 59 --- .../coinguardian/model/market/Koinim.java | 51 -- .../coinguardian/model/market/Korbit.java | 55 --- .../coinguardian/model/market/Kraken.java | 99 ---- .../coinguardian/model/market/Kucoin.java | 70 --- .../coinguardian/model/market/LakeBTC.java | 67 --- .../coinguardian/model/market/Liqui.java | 78 --- .../coinguardian/model/market/Livecoin.java | 71 --- .../model/market/LocalBitcoins.java | 59 --- .../coinguardian/model/market/Lykke.java | 60 --- .../coinguardian/model/market/McxNOW.java | 101 ---- .../coinguardian/model/market/Mercado.java | 54 --- .../coinguardian/model/market/Mexbt.java | 45 -- .../coinguardian/model/market/MintPal.java | 62 --- .../coinguardian/model/market/Mtgox.java | 68 --- .../model/market/NegocieCoins.java | 47 -- .../coinguardian/model/market/Nocks.java | 69 --- .../model/market/OKCoinFutures.java | 67 --- .../coinguardian/model/market/Okcoin.java | 55 --- .../coinguardian/model/market/OmniTrade.java | 61 --- .../coinguardian/model/market/Paribu.java | 47 -- .../coinguardian/model/market/Paymium.java | 58 --- .../coinguardian/model/market/Poloniex.java | 61 --- .../coinguardian/model/market/Prelude.java | 99 ---- .../coinguardian/model/market/QuadrigaCX.java | 59 --- .../coinguardian/model/market/Quoine.java | 68 --- .../coinguardian/model/market/Ripio.java | 42 -- .../model/market/SatoshiTango.java | 51 -- .../coinguardian/model/market/ShapeShift.java | 69 --- .../coinguardian/model/market/ShareXcoin.java | 59 --- .../coinguardian/model/market/SurBitcoin.java | 44 -- .../coinguardian/model/market/SurBtc.java | 61 --- .../coinguardian/model/market/TheRock.java | 100 ---- .../coinguardian/model/market/Unisend.java | 42 -- .../coinguardian/model/market/Unknown.java | 34 -- .../coinguardian/model/market/Unocoin.java | 41 -- .../coinguardian/model/market/Uphold.java | 71 --- .../coinguardian/model/market/Urdubit.java | 50 -- .../coinguardian/model/market/VBtc.java | 44 -- .../model/market/VaultOfSatoshi.java | 79 --- .../coinguardian/model/market/Vaultoro.java | 37 -- .../coinguardian/model/market/Vircurex.java | 459 ------------------ .../coinguardian/model/market/Virtex.java | 61 --- .../coinguardian/model/market/Winkdex.java | 42 -- .../coinguardian/model/market/YoBit.java | 75 --- .../coinguardian/model/market/Zaydo.java | 45 -- .../coinguardian/model/market/Zebpay.java | 100 ---- .../model/market/example/MarketExample.java | 49 -- .../util/CurrencyPairsMapHelper.java | 78 --- .../coinguardian/util/CurrencyUtils.java | 23 - .../coinguardian/util/FormatUtilsBase.java | 97 ---- .../coinguardian/util/MarketsConfigUtils.java | 40 -- .../coinguardian/util/ParseUtils.java | 11 - .../mobnetic/coinguardian/util/TimeUtils.java | 19 - .../coinguardian/util/XmlParserUtils.java | 35 -- dataModuleTester/build.gradle | 7 +- dataModuleTester/src/main/AndroidManifest.xml | 4 +- .../bitcoinchecker}/tester/MainActivity.java | 46 +- .../dialog/DynamicCurrencyPairsDialog.java | 20 +- .../tester/util/CheckErrorsUtils.java | 4 +- .../tester/util/HttpsHelper.java | 2 +- .../tester/util/MarketCurrencyPairsStore.java | 4 +- .../volley/CheckerErrorParsedError.java | 2 +- .../volley/CheckerVolleyMainRequest.java | 12 +- .../volley/CheckerVolleyNextRequest.java | 6 +- ...DynamicCurrencyPairsVolleyMainRequest.java | 14 +- ...DynamicCurrencyPairsVolleyNextRequest.java | 4 +- .../tester/volley/UnknownVolleyError.java | 2 +- .../generic/GenericCheckerVolleyRequest.java | 4 +- .../volley/generic/GzipVolleyRequest.java | 6 +- .../volley/generic/ResponseErrorListener.java | 2 +- .../volley/generic/ResponseListener.java | 2 +- 319 files changed, 8597 insertions(+), 10000 deletions(-) create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/config/MarketsConfig.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/config/Settings.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CheckerInfo.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencyPairInfo.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencyPairsListWithDate.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencySubunit.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencySubunitsMap.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/Futures.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/FuturesMarket.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/Market.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/Ticker.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/CurrenciesSubunits.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/Currency.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/CurrencyPairsMap.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/CurrencySymbols.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/VirtualCurrency.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Abucoins.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/AllCoin.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Binance.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bit2c.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitBay.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitFlyer.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitFlyerFX.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitKonan.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitMEX.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitMaszyna.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitTrex.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitX.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinCoId.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinToYou.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinTrade.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinVenezuela.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitexLa.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitfinex.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bithumb.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitoEX.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitorado.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitso.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitstamp.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitxCom.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bl3p.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bleutrade.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BlinkTrade.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Braziliex.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Btc38.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BtcBox.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BtcMarkets.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BtcXIndia.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Btcturk.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bter.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Buttercoin.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CCex.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Campbx.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CexIO.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ChileBit.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CleverCoin.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinDesk.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinFloor.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinJar.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinMarketIO.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinMateIO.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinSecure.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinSwap.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinTraderNet.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinTree.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinapult.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinbase.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinnest.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinome.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinone.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinse.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinsph.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Comkort.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CryptoAltex.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CryptoRush.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CryptoTrade.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptoine.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptonit.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptopia.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptsy.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Dashcurex.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/DolarBlueNet.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ETHEXIndia.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Exmo.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Fxbtc.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/FybSE.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/FybSG.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/GateCoin.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Gemini.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/HitBtc.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Huobi.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Igot.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ItBit.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Justcoin.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Koinex.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Koinim.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Korbit.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Kraken.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Kucoin.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/LakeBTC.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Liqui.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Livecoin.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/LocalBitcoins.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Lykke.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/McxNOW.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Mercado.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Mexbt.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/MintPal.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/NegocieCoins.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Nocks.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/OKCoinFutures.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Okcoin.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/OmniTrade.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Paribu.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Paymium.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Poloniex.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Prelude.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/QuadrigaCX.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Quoine.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Ripio.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/SatoshiTango.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ShapeShift.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ShareXcoin.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/SurBitcoin.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/SurBtc.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/TheRock.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Unisend.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Unknown.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Unocoin.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Uphold.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Urdubit.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/VBtc.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/VaultOfSatoshi.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Vaultoro.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Vircurex.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Virtex.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Winkdex.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/YoBit.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Zaydo.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Zebpay.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/example/MarketExample.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/CurrencyPairsMapHelper.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/CurrencyUtils.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/FormatUtilsBase.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/MarketsConfigUtils.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/ParseUtils.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/TimeUtils.kt create mode 100644 dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/XmlParserUtils.kt delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/config/MarketsConfig.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/config/Settings.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/CheckerInfo.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencyPairInfo.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencyPairsListWithDate.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencySubunit.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencySubunitsMap.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencySymbol.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/Futures.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/FuturesMarket.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/Market.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/Ticker.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/CurrenciesSubunits.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/Currency.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/CurrencySymbols.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/VirtualCurrency.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Abucoins.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/AllCoin.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Binance.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bit2c.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitBay.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitFlyer.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitFlyerFX.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitKonan.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitMEX.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitMaszyna.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitTrex.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitX.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinCentralNet.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinCoId.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinToYou.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinTrade.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinVenezuela.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitexLa.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bitfinex.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bithumb.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitoEX.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bitorado.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bitso.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bitstamp.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitxCom.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bl3p.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bleutrade.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BlinkTrade.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Braziliex.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Btc38.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BtcBox.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BtcMarkets.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BtcXIndia.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Btcturk.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bter.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Buttercoin.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CCex.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Campbx.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CexIO.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/ChileBit.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CleverCoin.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinDesk.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinFloor.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinJar.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinMarketIO.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinMateIO.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinSecure.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinSwap.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinTraderNet.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinTree.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinapult.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinbase.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinnest.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinome.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinone.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinse.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinsph.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Comkort.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CryptoAltex.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CryptoRush.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CryptoTrade.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Cryptoine.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Cryptonit.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Cryptopia.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Cryptsy.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Dashcurex.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/DolarBlueNet.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/ETHEXIndia.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Exmo.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/FoscEx.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Fxbtc.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/FybSE.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/FybSG.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/GateCoin.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Gemini.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/HitBtc.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Huobi.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Igot.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/ItBit.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Justcoin.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Koinex.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Koinim.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Korbit.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Kraken.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Kucoin.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/LakeBTC.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Liqui.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Livecoin.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/LocalBitcoins.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Lykke.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/McxNOW.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Mercado.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Mexbt.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/MintPal.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Mtgox.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/NegocieCoins.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Nocks.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/OKCoinFutures.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Okcoin.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/OmniTrade.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Paribu.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Paymium.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Poloniex.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Prelude.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/QuadrigaCX.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Quoine.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Ripio.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/SatoshiTango.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/ShapeShift.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/ShareXcoin.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/SurBitcoin.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/SurBtc.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/TheRock.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Unisend.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Unknown.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Unocoin.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Uphold.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Urdubit.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/VBtc.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/VaultOfSatoshi.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Vaultoro.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Vircurex.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Virtex.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Winkdex.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/YoBit.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Zaydo.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Zebpay.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/model/market/example/MarketExample.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/util/CurrencyPairsMapHelper.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/util/CurrencyUtils.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/util/FormatUtilsBase.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/util/MarketsConfigUtils.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/util/ParseUtils.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/util/TimeUtils.java delete mode 100644 dataModule/src/main/java/com/mobnetic/coinguardian/util/XmlParserUtils.java rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/MainActivity.java (88%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/dialog/DynamicCurrencyPairsDialog.java (87%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/util/CheckErrorsUtils.java (96%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/util/HttpsHelper.java (95%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/util/MarketCurrencyPairsStore.java (91%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/volley/CheckerErrorParsedError.java (85%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/volley/CheckerVolleyMainRequest.java (84%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/volley/CheckerVolleyNextRequest.java (69%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/volley/DynamicCurrencyPairsVolleyMainRequest.java (82%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/volley/DynamicCurrencyPairsVolleyNextRequest.java (75%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/volley/UnknownVolleyError.java (79%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/volley/generic/GenericCheckerVolleyRequest.java (78%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/volley/generic/GzipVolleyRequest.java (95%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/volley/generic/ResponseErrorListener.java (88%) rename dataModuleTester/src/main/java/com/{mobnetic/coinguardiandatamodule => aneonex/bitcoinchecker}/tester/volley/generic/ResponseListener.java (87%) diff --git a/build.gradle b/build.gradle index dad9ef0a..280076a1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,11 +1,13 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { + ext.kotlin_version = '1.4.0' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:4.0.1' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/dataModule/build.gradle b/dataModule/build.gradle index f322dc77..ac50589c 100644 --- a/dataModule/build.gradle +++ b/dataModule/build.gradle @@ -1,12 +1,13 @@ apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' android { - compileSdkVersion 28 + compileSdkVersion 30 buildToolsVersion "29.0.2" defaultConfig { minSdkVersion 26 - targetSdkVersion 28 + targetSdkVersion 30 } buildTypes { @@ -16,3 +17,9 @@ android { } } } +repositories { + mavenCentral() +} +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/dataModule/src/main/AndroidManifest.xml b/dataModule/src/main/AndroidManifest.xml index f725bc51..d416a153 100644 --- a/dataModule/src/main/AndroidManifest.xml +++ b/dataModule/src/main/AndroidManifest.xml @@ -1,10 +1,6 @@ - - + android:versionName="2.0" > diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/config/MarketsConfig.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/config/MarketsConfig.kt new file mode 100644 index 00000000..5864096a --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/config/MarketsConfig.kt @@ -0,0 +1,140 @@ +package com.aneonex.bitcoinchecker.datamodule.config + +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.market.* +import java.util.* + +object MarketsConfig { + @kotlin.jvm.JvmField + val MARKETS = LinkedHashMap() + private fun addMarket(market: Market) { + MARKETS[market.key] = market + } + + init { + addMarket(Bitstamp()) + addMarket(Mercado()) + addMarket(Kraken()) + addMarket(Bitfinex()) + addMarket(Okcoin()) + addMarket(Cryptsy()) + addMarket(Coinbase()) + addMarket(Vircurex()) + addMarket(Fxbtc()) + addMarket(Bter()) + addMarket(Justcoin()) + addMarket(Btcturk()) + addMarket(Coinse()) + addMarket(Campbx()) + addMarket(TheRock()) + addMarket(CexIO()) + addMarket(Virtex()) + addMarket(Huobi()) + addMarket(VaultOfSatoshi()) + addMarket(CoinMarketIO()) + addMarket(McxNOW()) + addMarket(CryptoTrade()) + addMarket(MintPal()) + addMarket(CoinJar()) + addMarket(Poloniex()) + addMarket(Winkdex()) + addMarket(BitX()) + addMarket(CCex()) + addMarket(Bitorado()) + addMarket(CryptoRush()) + addMarket(CoinDesk()) + addMarket(Koinim()) + addMarket(FybSE()) + addMarket(FybSG()) + addMarket(Prelude()) + addMarket(BitKonan()) + addMarket(BitTrex()) + addMarket(Comkort()) + addMarket(Bit2c()) + addMarket(CryptoAltex()) + addMarket(BtcMarkets()) + addMarket(Bleutrade()) + addMarket(ShareXcoin()) + addMarket(Unisend()) + addMarket(BitcoinVenezuela()) + addMarket(Korbit()) + addMarket(CoinTree()) + addMarket(Cryptonit()) + addMarket(LakeBTC()) + addMarket(BitMaszyna()) + addMarket(Zaydo()) + addMarket(AllCoin()) + addMarket(Ripio()) + addMarket(DolarBlueNet()) + addMarket(CoinSwap()) + addMarket(Paymium()) + addMarket(Bitso()) + addMarket(Cryptoine()) + addMarket(BitcoinToYou()) + addMarket(BitexLa()) + addMarket(ItBit()) + addMarket(BitcoinCoId()) + addMarket(HitBtc()) + addMarket(CleverCoin()) + addMarket(BitBay()) + addMarket(QuadrigaCX()) + addMarket(CoinMateIO()) + addMarket(Buttercoin()) + addMarket(CoinTraderNet()) + addMarket(LocalBitcoins()) + addMarket(Cryptopia()) + addMarket(Igot()) + addMarket(Mexbt()) + addMarket(Vaultoro()) + addMarket(BitxCom()) + addMarket(BtcBox()) + addMarket(BtcXIndia()) + addMarket(Uphold()) + addMarket(YoBit()) + addMarket(ShapeShift()) + addMarket(BitoEX()) + addMarket(OKCoinFutures()) + // addMarket(new FoscEx()); + addMarket(CoinSecure()) + addMarket(Dashcurex()) + addMarket(Quoine()) + addMarket(Livecoin()) + addMarket(Gemini()) + addMarket(Coinapult()) + addMarket(Btc38()) + addMarket(ETHEXIndia()) + addMarket(GateCoin()) + addMarket(Liqui()) + addMarket(ChileBit()) + addMarket(SurBitcoin()) + addMarket(VBtc()) + addMarket(Urdubit()) + addMarket(NegocieCoins()) + addMarket(BitMEX()) + addMarket(BitFlyer()) + addMarket(BitFlyerFX()) + addMarket(Coinone()) + addMarket(Bithumb()) + addMarket(Coinsph()) + addMarket(Bl3p()) + addMarket(SurBtc()) + addMarket(CoinFloor()) + addMarket(Lykke()) + addMarket(Coinnest()) + addMarket(Braziliex()) + addMarket(Abucoins()) + addMarket(Zebpay()) + addMarket(Paribu()) + addMarket(SatoshiTango()) + addMarket(Koinex()) + // addMarket(new Unocoin()); + addMarket(BlinkTrade()) + addMarket(Exmo()) + addMarket(Binance()) + addMarket(Kucoin()) + addMarket(BitcoinTrade()) + addMarket(OmniTrade()) + addMarket(Coinome()) + addMarket(Nocks()) + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/config/Settings.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/config/Settings.kt new file mode 100644 index 00000000..773aeee4 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/config/Settings.kt @@ -0,0 +1,5 @@ +package com.aneonex.bitcoinchecker.datamodule.config + +object Settings { + var userCountry: String? = null +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CheckerInfo.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CheckerInfo.kt new file mode 100644 index 00000000..9ec55ce2 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CheckerInfo.kt @@ -0,0 +1,11 @@ +package com.aneonex.bitcoinchecker.datamodule.model + +import java.util.* + +class CheckerInfo(currencyBase: String, currencyCounter: String, currencyPairId: String?, val contractType: Int) + : CurrencyPairInfo(currencyBase, currencyCounter, currencyPairId) { + val currencyBaseLowerCase: String + get() = currencyBase.toLowerCase(Locale.US) + val currencyCounterLowerCase: String + get() = currencyCounter.toLowerCase(Locale.US) +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencyPairInfo.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencyPairInfo.kt new file mode 100644 index 00000000..78740623 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencyPairInfo.kt @@ -0,0 +1,9 @@ +package com.aneonex.bitcoinchecker.datamodule.model + +open class CurrencyPairInfo(val currencyBase: String, val currencyCounter: String, val currencyPairId: String?) : Comparable { + @Throws(NullPointerException::class) + override fun compareTo(other: CurrencyPairInfo): Int { + val compBase = currencyBase.compareTo(other.currencyBase, ignoreCase = true) + return if (compBase != 0) compBase else currencyCounter.compareTo(other.currencyCounter, ignoreCase = true) + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencyPairsListWithDate.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencyPairsListWithDate.kt new file mode 100644 index 00000000..27d5cb36 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencyPairsListWithDate.kt @@ -0,0 +1,8 @@ +package com.aneonex.bitcoinchecker.datamodule.model + +class CurrencyPairsListWithDate { + @kotlin.jvm.JvmField + var date: Long = 0 + @kotlin.jvm.JvmField + var pairs: List? = null +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencySubunit.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencySubunit.kt new file mode 100644 index 00000000..602ced87 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencySubunit.kt @@ -0,0 +1,3 @@ +package com.aneonex.bitcoinchecker.datamodule.model + +class CurrencySubunit @JvmOverloads constructor(val name: String, val subunitToUnit: Long, val allowDecimal: Boolean = true) \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencySubunitsMap.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencySubunitsMap.kt new file mode 100644 index 00000000..fe394169 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/CurrencySubunitsMap.kt @@ -0,0 +1,13 @@ +package com.aneonex.bitcoinchecker.datamodule.model + +import java.util.* + +class CurrencySubunitsMap(vararg currencySubunits: CurrencySubunit) : LinkedHashMap() { + companion object { +// private const val serialVersionUID = -7219011491064245859L + } + + init { + for (currencySubunit in currencySubunits) put(currencySubunit.subunitToUnit, currencySubunit) + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/Futures.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/Futures.kt new file mode 100644 index 00000000..c22664e8 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/Futures.kt @@ -0,0 +1,23 @@ +package com.aneonex.bitcoinchecker.datamodule.model + +object Futures { + const val CONTRACT_TYPE_WEEKLY = 0 + const val CONTRACT_TYPE_BIWEEKLY = 1 +// const val CONTRACT_TYPE_MONTHLY = 2 +// const val CONTRACT_TYPE_BIMONTHLY = 3 + const val CONTRACT_TYPE_QUARTERLY = 4 + private val CONTRACT_TYPE_SHORT_NAMES = arrayOf( + "1W", + "2W", + "1M", + "2M", + "3M" + ) + + @kotlin.jvm.JvmStatic + fun getContractTypeShortName(contractType: Int): String? { + return if (contractType >= 0 && contractType < CONTRACT_TYPE_SHORT_NAMES.size) { + CONTRACT_TYPE_SHORT_NAMES[contractType] + } else null + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/FuturesMarket.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/FuturesMarket.kt new file mode 100644 index 00000000..0335c6c8 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/FuturesMarket.kt @@ -0,0 +1,13 @@ +package com.aneonex.bitcoinchecker.datamodule.model + +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap + +abstract class FuturesMarket(name: String, ttsName: String, currencyPairs: CurrencyPairsMap?, val contractTypes: IntArray) + : Market(name, ttsName, currencyPairs) { + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return getUrl(requestId, checkerInfo, checkerInfo.contractType) + } + + protected abstract fun getUrl(requestId: Int, checkerInfo: CheckerInfo, contractType: Int): String +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/Market.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/Market.kt new file mode 100644 index 00000000..8b3cd26f --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/Market.kt @@ -0,0 +1,98 @@ +package com.aneonex.bitcoinchecker.datamodule.model + +import android.text.TextUtils +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import com.aneonex.bitcoinchecker.datamodule.util.TimeUtils +import org.json.JSONObject + +abstract class Market(name: String, ttsName: String, currencyPairs: CurrencyPairsMap?) { + @kotlin.jvm.JvmField + val key: String = this.javaClass.simpleName + + @kotlin.jvm.JvmField + val name: String = name + + val ttsName: String = ttsName + + @kotlin.jvm.JvmField + val currencyPairs: CurrencyPairsMap? + + open val cautionResId: Int + get() = 0 + + // ==================== + // Parse Ticker + // ==================== + open fun getNumOfRequests(checkerInfo: CheckerInfo?): Int { + return 1 + } + + abstract fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String + @Throws(Exception::class) + fun parseTickerMain(requestId: Int, responseString: String, ticker: Ticker, checkerInfo: CheckerInfo): Ticker { + parseTicker(requestId, responseString, ticker, checkerInfo) + if (ticker.timestamp <= 0) ticker.timestamp = System.currentTimeMillis() else ticker.timestamp = TimeUtils.parseTimeToMillis(ticker.timestamp) + return ticker + } + + @Throws(Exception::class) + protected open fun parseTicker(requestId: Int, responseString: String, ticker: Ticker, checkerInfo: CheckerInfo) { + parseTickerFromJsonObject(requestId, JSONObject(responseString), ticker, checkerInfo) + } + + @Throws(Exception::class) + protected open fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + // do parsing + } + + // ==================== + // Parse Ticker Error + // ==================== + @Throws(Exception::class) + fun parseErrorMain(requestId: Int, responseString: String, checkerInfo: CheckerInfo): String? { + return parseError(requestId, responseString, checkerInfo) + } + + @Throws(Exception::class) + protected open fun parseError(requestId: Int, responseString: String, checkerInfo: CheckerInfo): String? { + return parseErrorFromJsonObject(requestId, JSONObject(responseString), checkerInfo) + } + + @Throws(Exception::class) + protected open fun parseErrorFromJsonObject(requestId: Int, jsonObject: JSONObject, checkerInfo: CheckerInfo?): String? { + throw Exception() + } + + // ==================== + // Parse currency pairs + // ==================== + open val currencyPairsNumOfRequests: Int + get() = 1 + + open fun getCurrencyPairsUrl(requestId: Int): String? { + return null + } + + @Throws(Exception::class) + fun parseCurrencyPairsMain(requestId: Int, responseString: String, pairs: MutableList) { + parseCurrencyPairs(requestId, responseString, pairs) + for (i in pairs.indices.reversed()) { + val currencyPairInfo = pairs[i] + if (TextUtils.isEmpty(currencyPairInfo.currencyBase) || TextUtils.isEmpty(currencyPairInfo.currencyCounter)) pairs.removeAt(i) + } + } + + @Throws(Exception::class) + protected open fun parseCurrencyPairs(requestId: Int, responseString: String, pairs: MutableList) { + parseCurrencyPairsFromJsonObject(requestId, JSONObject(responseString), pairs) + } + + @Throws(Exception::class) + protected open fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + // do parsing + } + + init { + this.currencyPairs = currencyPairs + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/Ticker.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/Ticker.kt new file mode 100644 index 00000000..638f840f --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/Ticker.kt @@ -0,0 +1,32 @@ +package com.aneonex.bitcoinchecker.datamodule.model + +class Ticker { + @kotlin.jvm.JvmField + var bid: Double + @kotlin.jvm.JvmField + var ask: Double + @kotlin.jvm.JvmField + var vol: Double + @kotlin.jvm.JvmField + var high: Double + @kotlin.jvm.JvmField + var low: Double + @kotlin.jvm.JvmField + var last: Double + @kotlin.jvm.JvmField + var timestamp: Long + + companion object { + const val NO_DATA = -1 + } + + init { + bid = NO_DATA.toDouble() + ask = NO_DATA.toDouble() + vol = NO_DATA.toDouble() + high = NO_DATA.toDouble() + low = NO_DATA.toDouble() + last = NO_DATA.toDouble() + timestamp = NO_DATA.toLong() + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/CurrenciesSubunits.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/CurrenciesSubunits.kt new file mode 100644 index 00000000..03ca125a --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/CurrenciesSubunits.kt @@ -0,0 +1,22 @@ +package com.aneonex.bitcoinchecker.datamodule.model.currency + +import com.aneonex.bitcoinchecker.datamodule.model.CurrencySubunit +import com.aneonex.bitcoinchecker.datamodule.model.CurrencySubunitsMap +import java.util.* + +object CurrenciesSubunits { + val CURRENCIES_SUBUNITS = HashMap() + + init { + CURRENCIES_SUBUNITS[VirtualCurrency.BTC] = CurrencySubunitsMap( + CurrencySubunit(VirtualCurrency.BTC, 1), + CurrencySubunit(VirtualCurrency.mBTC, 1000), + CurrencySubunit(VirtualCurrency.uBTC, 1000000), + CurrencySubunit(VirtualCurrency.Satoshi, 100000000, false) + ) + CURRENCIES_SUBUNITS[VirtualCurrency.LTC] = CurrencySubunitsMap( + CurrencySubunit(VirtualCurrency.LTC, 1), + CurrencySubunit(VirtualCurrency.mLTC, 1000) + ) + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/Currency.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/Currency.kt new file mode 100644 index 00000000..8f51066d --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/Currency.kt @@ -0,0 +1,167 @@ +package com.aneonex.bitcoinchecker.datamodule.model.currency + +object Currency { + const val AED = "AED" + const val AFN = "AFN" + const val ALL = "ALL" + const val AMD = "AMD" + const val ANG = "ANG" + const val AOA = "AOA" + const val ARS = "ARS" + const val AUD = "AUD" + const val AWG = "AWG" + const val AZN = "AZN" + const val BAM = "BAM" + const val BBD = "BBD" + const val BDT = "BDT" + const val BGN = "BGN" + const val BHD = "BHD" + const val BIF = "BIF" + const val BMD = "BMD" + const val BND = "BND" + const val BOB = "BOB" + const val BRL = "BRL" + const val BSD = "BSD" + const val BTN = "BTN" + const val BWP = "BWP" + const val BYR = "BYR" + const val BZD = "BZD" + const val CAD = "CAD" + const val CDF = "CDF" + const val CHF = "CHF" + const val CLP = "CLP" + const val CNY = "CNY" + const val COP = "COP" + const val CRC = "CRC" + const val CUP = "CUP" + const val CVE = "CVE" + const val CZK = "CZK" + const val DJF = "DJF" + const val DKK = "DKK" + const val DOP = "DOP" + const val DZD = "DZD" + const val EEK = "EEK" + const val EGP = "EGP" + const val ERN = "ERN" + const val ETB = "ETB" + const val EUR = "EUR" + const val FJD = "FJD" + const val FKP = "FKP" + const val GBP = "GBP" + const val GEL = "GEL" + const val GHS = "GHS" + const val GIP = "GIP" + const val GMD = "GMD" + const val GNF = "GNF" + const val GOLD = "GOLD" + const val GTQ = "GTQ" + const val GYD = "GYD" + const val HKD = "HKD" + const val HNL = "HNL" + const val HRK = "HRK" + const val HTG = "HTG" + const val HUF = "HUF" + const val IDR = "IDR" + const val ILS = "ILS" + const val INR = "INR" + const val IQD = "IQD" + const val IRR = "IRR" + const val ISK = "ISK" + const val JMD = "JMD" + const val JOD = "JOD" + const val JPY = "JPY" + const val KES = "KES" + const val KGS = "KGS" + const val KHR = "KHR" + const val KMF = "KMF" + const val KPW = "KPW" + const val KRW = "KRW" + const val KWD = "KWD" + const val KYD = "KYD" + const val KZT = "KZT" + const val LAK = "LAK" + const val LBP = "LBP" + const val LKR = "LKR" + const val LRD = "LRD" + const val LSL = "LSL" + const val LTL = "LTL" + const val LVL = "LVL" + const val LYD = "LYD" + const val MAD = "MAD" + const val MDL = "MDL" + const val MGA = "MGA" + const val MKD = "MKD" + const val MMK = "MMK" + const val MNT = "MNT" + const val MOP = "MOP" + const val MRO = "MRO" + const val MUR = "MUR" + const val MVR = "MVR" + const val MWK = "MWK" + const val MXN = "MXN" + const val MYR = "MYR" + const val MZN = "MZN" + const val NAD = "NAD" + const val NGN = "NGN" + const val NIO = "NIO" + const val NIS = "NIS" + const val NOK = "NOK" + const val NPR = "NPR" + const val NZD = "NZD" + const val OMR = "OMR" + const val PAB = "PAB" + const val PEN = "PEN" + const val PGK = "PGK" + const val PHP = "PHP" + const val PKR = "PKR" + const val PLN = "PLN" + const val PYG = "PYG" + const val QAR = "QAR" + const val RON = "RON" + const val RSD = "RSD" + const val RUB = "RUB" + const val RUR = "RUR" + const val RWF = "RWF" + const val SAR = "SAR" + const val SBD = "SBD" + const val SCR = "SCR" + const val SDG = "SDG" + const val SEK = "SEK" + const val SGD = "SGD" + const val SHP = "SHP" + const val SLL = "SLL" + const val SOS = "SOS" + const val SRD = "SRD" + const val STD = "STD" + const val SVC = "SVC" + const val SYP = "SYP" + const val SZL = "SZL" + const val THB = "THB" + const val TJS = "TJS" + const val TMM = "TMM" + const val TND = "TND" + const val TOP = "TOP" + const val TRY = "TRY" + const val TTD = "TTD" + const val TWD = "TWD" + const val TZS = "TZS" + const val UAH = "UAH" + const val UGX = "UGX" + const val USD = "USD" + const val UYU = "UYU" + const val UZS = "UZS" + const val VEF = "VEF" + const val VND = "VND" + const val VUV = "VUV" + const val WST = "WST" + const val XAF = "XAF" + const val XAG = "XAG" + const val XAU = "XAU" + const val XCD = "XCD" + const val XOF = "XOF" + const val XPF = "XPF" + const val YER = "YER" + const val ZAR = "ZAR" + const val ZMK = "ZMK" + const val ZWL = "ZWL" +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/CurrencyPairsMap.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/CurrencyPairsMap.kt new file mode 100644 index 00000000..3643ee40 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/CurrencyPairsMap.kt @@ -0,0 +1,3 @@ +package com.aneonex.bitcoinchecker.datamodule.model.currency + +class CurrencyPairsMap: LinkedHashMap>() \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/CurrencySymbols.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/CurrencySymbols.kt new file mode 100644 index 00000000..0eeb68da --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/CurrencySymbols.kt @@ -0,0 +1,54 @@ +package com.aneonex.bitcoinchecker.datamodule.model.currency + +import java.util.* + +object CurrencySymbols { + val CURRENCY_SYMBOLS = HashMap() + + init { + CURRENCY_SYMBOLS[Currency.USD] = "$" + CURRENCY_SYMBOLS[Currency.PLN] = "zÅ‚" + CURRENCY_SYMBOLS[Currency.CNY] = "Â¥" + CURRENCY_SYMBOLS[Currency.EUR] = "€" + // CURRENCY_SYMBOLS.put(CAD, "$"); + CURRENCY_SYMBOLS[Currency.GBP] = "£" + CURRENCY_SYMBOLS[Currency.CHF] = "Fr" + CURRENCY_SYMBOLS[Currency.RUB] = "Ñ€." + CURRENCY_SYMBOLS[Currency.RUR] = "Ñ€." + CURRENCY_SYMBOLS[Currency.AUD] = "$" + CURRENCY_SYMBOLS[Currency.SEK] = "kr" + CURRENCY_SYMBOLS[Currency.DKK] = "kr" + CURRENCY_SYMBOLS[Currency.HKD] = "$" + CURRENCY_SYMBOLS[Currency.SGD] = "$" + CURRENCY_SYMBOLS[Currency.THB] = "฿" + CURRENCY_SYMBOLS[Currency.NZD] = "$" + CURRENCY_SYMBOLS[Currency.JPY] = "Â¥" + CURRENCY_SYMBOLS[Currency.BRL] = "R$" + CURRENCY_SYMBOLS[Currency.KRW] = "â‚©" + CURRENCY_SYMBOLS[Currency.AFN] = "Ø‹" + CURRENCY_SYMBOLS[Currency.ALL] = "L" + CURRENCY_SYMBOLS[Currency.DZD] = "د.ج" + CURRENCY_SYMBOLS[Currency.AOA] = "Kz" + CURRENCY_SYMBOLS[Currency.ARS] = "$" + CURRENCY_SYMBOLS[Currency.AMD] = "Õ¤Ö€." + CURRENCY_SYMBOLS[Currency.AWG] = "Æ’" + CURRENCY_SYMBOLS[Currency.AZN] = "m" + CURRENCY_SYMBOLS[Currency.BSD] = "$" + CURRENCY_SYMBOLS[Currency.BHD] = "ب.د" + CURRENCY_SYMBOLS[Currency.BDT] = "৳" + CURRENCY_SYMBOLS[Currency.BBD] = "$" + CURRENCY_SYMBOLS[Currency.BYR] = "Br" + CURRENCY_SYMBOLS[Currency.BZD] = "$" + CURRENCY_SYMBOLS[Currency.BMD] = "$" + CURRENCY_SYMBOLS[Currency.BTN] = "Nu." + CURRENCY_SYMBOLS[Currency.BOB] = "Bs." + CURRENCY_SYMBOLS[Currency.BAM] = "КМ" + CURRENCY_SYMBOLS[Currency.BWP] = "P" + CURRENCY_SYMBOLS[Currency.BND] = "$" + CURRENCY_SYMBOLS[Currency.BGN] = "лв" + CURRENCY_SYMBOLS[Currency.BIF] = "Fr" + CURRENCY_SYMBOLS[Currency.TRY] = "TL" + CURRENCY_SYMBOLS[Currency.ZAR] = "R" + CURRENCY_SYMBOLS[Currency.IDR] = "Rp" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/VirtualCurrency.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/VirtualCurrency.kt new file mode 100644 index 00000000..3d8a42d8 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/currency/VirtualCurrency.kt @@ -0,0 +1,373 @@ +package com.aneonex.bitcoinchecker.datamodule.model.currency + +object VirtualCurrency { +// const val _10_5 = "10-5" +// const val _21 = "21" +// const val _42 = "42" +// const val _66 = "66" +// const val _888 = "888" + const val ADT = "ADT" + const val AE = "AE" + const val ALB = "ALB" + const val ALF = "ALF" + const val ALP = "ALP" + const val ALT = "ALT" + const val AMC = "AMC" + const val ANC = "ANC" + const val ANI = "ANI" + const val ANT = "ANT" + const val ARG = "ARG" + const val ASC = "ASC" + const val AUR = "AUR" + const val BAT = "BAT" + const val BC = "BC" + const val BCC = "BCC" + const val BCH = "BCH" + const val BCU = "BCU" + const val BCX = "BCX" + const val BEE = "BEE" + const val BEER = "BEER" + const val BELA = "BELA" + const val BELI = "BELI" + const val BEN = "BEN" + const val BET = "BET" + const val BF1 = "BF1" + const val BFX = "BFX" + const val BIL = "BIL" + const val BLA = "BLA" + const val BLC = "BLC" + const val BNB = "BNB" + const val BQC = "BQC" + const val BTB = "BTB" + const val BTC = "BTC" + const val mBTC = "mBTC" + const val uBTC = "µBTC" + const val Satoshi = "Satoshi" + const val BTCS = "BTCS" + const val BTE = "BTE" + const val BTG = "BTG" + const val BTP = "BTP" + const val BTQ = "BTQ" + const val BTR = "BTR" + const val BUK = "BUK" + const val BUR = "BUR" + const val C2 = "C2" + const val CACH = "CACH" + const val CAGE = "CAGE" + const val CAP = "CAP" + const val CARB = "CARB" + const val CASH = "CASH" + const val CAT = "CAT" + const val CDC = "CDC" + const val CENT = "CENT" + const val CGA = "CGA" + const val CGB = "CGB" + const val CIN = "CIN" + const val CL = "CL" + const val CLR = "CLR" + const val CMC = "CMC" + const val CMT = "CMT" + const val CNC = "CNC" + const val CNOTE = "CNOTE" + const val COIN = "COIN" + const val COINO = "COINO" + const val COL = "COL" + const val COLA = "COLA" + const val CON = "CON" + const val CORG = "CORG" + const val CPR = "CPR" + const val CR = "CR" + const val CRA = "CRA" + const val CRC = "CRC" + const val CRD = "CRD" + const val CREA = "CREA" + const val CRN = "CRN" + const val CRS = "CRS" + const val CSC = "CSC" + const val CTM = "CTM" + const val DASH = "DASH" + const val DBL = "DBL" + const val DELTA = "DELTA" + const val DEM = "DEM" + const val DGB = "DGB" + const val DGC = "DGC" + const val DIME = "DIME" + const val DMD = "DMD" + const val DOG = "DOG" + const val DOGE = "DOGE" + const val DOPE = "DOPE" + const val DRK = "DRK" + const val DSH = "DSH" // DASH + const val DTC = "DTC" + const val DUCK = "DUCK" + const val DVC = "DVC" + const val EAC = "EAC" + const val ECC = "ECC" + const val ECN = "ECN" + const val ELC = "ELC" + const val ELP = "ELP" + const val EMC2 = "EMC2" + const val EMD = "EMD" + const val EMO = "EMO" + const val EOS = "EOS" + const val ETC = "ETC" + const val ETH = "ETH" + const val ETOK = "ETOK" + const val eTOK = "eTOK" + const val EUC = "EUC" + const val EXC = "EXC" + const val EZC = "EZC" + const val FCK = "FCK" + const val FFC = "FFC" + const val FLAP = "FLAP" + const val FLO = "FLO" + const val FLT = "FLT" + const val FOX = "FOX" + const val FRC = "FRC" + const val FRK = "FRK" + const val FRQ = "FRQ" + const val FRY = "FRY" + const val FRZ = "FRZ" + const val FSC = "FSC" + const val FSS = "FSS" + const val FST = "FST" + const val FTC = "FTC" + const val FUNK = "FUNK" + const val FZ = "FZ" + const val GAME = "GAME" + const val GDC = "GDC" + const val GHS = "GHS" + const val GLB = "GLB" + const val GLC = "GLC" + const val GLD = "GLD" + const val GLX = "GLX" + const val GME = "GME" + const val GNT = "GNT" + const val GOAT = "GOAT" + const val GOX = "GOX" + const val GPUC = "GPUC" + const val GRC = "GRC" + const val GRUMP = "GRUMP" + const val HBN = "HBN" + const val HEX = "HEX" + const val HIRO = "HIRO" + const val HRO = "HRO" + const val HUC = "HUC" + const val HVC = "HVC" + const val HXC = "HXC" + const val HYC = "HYC" + const val I0C = "I0C" + const val ICN = "ICN" + const val IFC = "IFC" + const val IND = "IND" + const val IOST = "IOST" + const val IOT = "IOT" + const val IQD = "IQD" + const val IXC = "IXC" + const val JKC = "JKC" + const val JRY = "JRY" + const val KARM = "KARM" + const val KCS = "KCS" + const val KDC = "KDC" + const val KGC = "KGC" + const val KKC = "KKC" + const val KNC = "KNC" + const val KOI = "KOI" + const val KRN = "KRN" + const val KUN = "KUN" + const val LBW = "LBW" + const val LDC = "LDC" + const val LEAF = "LEAF" + const val LGBT = "LGBT" + const val LGC = "LGC" + const val LK7 = "LK7" + const val LKY = "LKY" + const val LMC = "LMC" + const val LOT = "LOT" + const val LSK = "LSK" + const val LTB = "LTB" + const val LTC = "LTC" + const val mLTC = "mLTC" + const val LYC = "LYC" + const val MAX = "MAX" + const val MCR = "MCR" + const val MCX = "MCX" + const val MEC = "MEC" + const val MEM = "MEM" + const val MEOW = "MEOW" + const val MIM = "MIM" + const val MINT = "MINT" + const val MMC = "MMC" + const val MNC = "MNC" + const val MOON = "MOON" + const val MRC = "MRC" + const val MRS = "MRS" + const val MRY = "MRY" + const val MSC = "MSC" + const val MST = "MST" + const val MTC = "MTC" + const val MTS = "MTS" + const val MXB = "MXB" + const val MXN = "MXN" + const val MYMINER = "MYMINER" + const val MYR = "MYR" + const val MZC = "MZC" + const val NAN = "NAN" + const val NBL = "NBL" + const val NCASH = "NCASH" + const val NDL = "NDL" + const val NEC = "NEC" + const val NEO = "NEO" + const val NET = "NET" + const val NIB = "NIB" + const val NKA = "NKA" + const val NMC = "NMC" + const val NOBL = "NOBL" + const val NOTE = "NOTE" + const val NRB = "NRB" + const val NUC = "NUC" + const val NVC = "NVC" + const val NXT = "NXT" + const val NYAN = "NYAN" + const val OIL = "OIL" + const val OLY = "OLY" + const val OMG = "OMG" + const val ORB = "ORB" + const val ORG = "ORG" + const val ORO = "ORO" + const val OSC = "OSC" +// const val `P$` = "P$" + const val PAND = "PAND" + const val PANDA = "PANDA" + const val PCC = "PCC" + const val PCN = "PCN" + const val PENG = "PENG" + const val PHI = "PHI" + const val PHS = "PHS" + const val PIC = "PIC" + const val PLC = "PLC" + const val PLT = "PLT" + const val PMC = "PMC" + const val PND = "PND" + const val POD = "POD" + const val POINTS = "POINTS" + const val POT = "POT" + const val PPC = "PPC" + const val PRC = "PRC" + const val PRT = "PRT" + const val PT = "PT" + const val PTC = "PTC" + const val PTS = "PTS" + const val PWC = "PWC" + const val PWNY = "PWNY" + const val PXC = "PXC" + const val PXL = "PXL" + const val PYC = "PYC" + const val Q2C = "Q2C" + const val QB = "QB" + const val QRK = "QRK" + const val QTUM = "QTUM" + const val RAD = "RAD" + const val RAIN = "RAIN" + const val RBBT = "RBBT" + const val RCH = "RCH" + const val RDD = "RDD" + const val REC = "REC" + const val RED = "RED" + const val REDD = "REDD" // RDD + const val REP = "REP" // RDD + const val RIC = "RIC" + const val RON = "RON" + const val RPC = "RPC" + const val RPD = "RPD" + const val RRT = "RRT" + const val RSC = "RSC" + const val RBY = "RBY" + const val RYC = "RYC" + const val SAN = "SAN" + const val SAT = "SAT" + const val SAV = "SAV" + const val SBC = "SBC" + const val SBX = "SBX" + const val SC = "SC" + const val SCO = "SCO" + const val SMC = "SMC" + const val SOC = "SOC" + const val SOCHI = "SOCHI" + const val SPA = "SPA" + const val SPT = "SPT" + const val SRC = "SRC" + const val START = "START" + const val STC = "STC" + const val STL = "STL" + const val STR = "STR" + const val STY = "STY" + const val SUN = "SUN" + const val SXC = "SXC" + const val SYN = "SYN" + const val TAG = "TAG" + const val TAK = "TAK" + const val TEA = "TEA" + const val TEK = "TEK" + const val TEL = "TEL" + const val TES = "TES" + const val TFC = "TFC" + const val TGC = "TGC" + const val TH1 = "TH1" + const val THOR = "THOR" + const val TIPS = "TIPS" + const val TIX = "TIX" + const val TOP = "TOP" + const val TRC = "TRC" + const val TRL = "TRL" + const val TRX = "TRX" + const val TSL = "TSL" + const val TTC = "TTC" + const val TUSD = "TUSD" + const val UFO = "UFO" + const val UNC = "UNC" + const val UNI = "UNI" + const val UNO = "UNO" + const val USDE = "USDE" + const val USDe = "USDe" + const val USDT = "USDT" + const val UTC = "UTC" + const val VDC = "VDC" + const val VEN = "VEN" + const val VGC = "VGC" + const val VLC = "VLC" + const val VLT = "VLT" + const val VMP = "VMP" + const val VOLT = "VOLT" + const val VTC = "VTC" + const val WDC = "WDC" + const val WIKI = "WIKI" + const val WOLF = "WOLF" + const val XBT = "XBT" // BTC + const val XCP = "XCP" + const val XDG = "XDG" // DOGE + const val XIV = "XIV" + const val XJO = "XJO" + const val XLM = "XLM" + const val XMR = "XMR" + const val XNC = "XNC" + const val XPM = "XPM" + const val XPY = "XPY" + const val XRP = "XRP" + const val XVN = "XVN" // VEN + const val XXL = "XXL" + const val YAC = "YAC" + const val YANG = "YANG" + const val YBC = "YBC" + const val YIN = "YIN" + const val ZCC = "ZCC" + const val ZEC = "ZEC" + const val ZED = "ZED" + const val ZEIT = "ZEIT" + const val ZET = "ZET" + const val ZEU = "ZEU" + const val ZIL = "ZIL" + const val ZMB = "ZMB" + const val ZRX = "ZRX" + const val ZTC = "ZTC" +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Abucoins.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Abucoins.kt new file mode 100644 index 00000000..aace5a94 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Abucoins.kt @@ -0,0 +1,50 @@ +@file:Suppress("SpellCheckingInspection") + +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 Abucoins : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + 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) { + val jsonArray = JSONArray(responseString) + for (i in 0 until jsonArray.length()) { + val pairJsonObject = jsonArray.getJSONObject(i) + pairs.add(CurrencyPairInfo( + pairJsonObject.getString("base_currency"), + pairJsonObject.getString("quote_currency"), + pairJsonObject.getString("id"))) + } + } + + companion object { + private const val NAME = "Abucoins" + private const val TTS_NAME = NAME + private const val URL = "https://api.abucoins.com/products/%1\$s/stats" + private const val URL_CURRENCY_PAIRS = "https://api.abucoins.com/products" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/AllCoin.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/AllCoin.kt new file mode 100644 index 00000000..a2ef3375 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/AllCoin.kt @@ -0,0 +1,62 @@ +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 com.aneonex.bitcoinchecker.datamodule.util.ParseUtils +import com.aneonex.bitcoinchecker.datamodule.R +import org.json.JSONObject + +class AllCoin : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataJsonObject = jsonObject.getJSONObject("data") + ticker.bid = ParseUtils.getDoubleFromString(dataJsonObject, "top_bid") + ticker.ask = ParseUtils.getDoubleFromString(dataJsonObject, "top_ask") + ticker.vol = ParseUtils.getDoubleFromString(dataJsonObject, "volume_24h_" + checkerInfo.currencyBase) + ticker.high = ParseUtils.getDoubleFromString(dataJsonObject, "max_24h_price") + ticker.low = ParseUtils.getDoubleFromString(dataJsonObject, "min_24h_price") + ticker.last = ParseUtils.getDoubleFromString(dataJsonObject, "trade_price") + } + + @Throws(Exception::class) + override fun parseErrorFromJsonObject(requestId: Int, jsonObject: JSONObject, checkerInfo: CheckerInfo?): String? { + return jsonObject.getString("error_info") + } + + override val cautionResId: Int + get() = R.string.market_caution_allcoin + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val dataJsonObject = jsonObject.getJSONObject("data") + val pairsJsonArray = dataJsonObject.names() + for (i in 0 until pairsJsonArray.length()) { + val pairName = pairsJsonArray.getString(i) + val marketJsonObject = dataJsonObject.getJSONObject(pairName) + pairs.add(CurrencyPairInfo( + marketJsonObject.getString("type"), + marketJsonObject.getString("exchange"), + pairName)) + } + } + + companion object { + private const val NAME = "AllCoin" + private const val TTS_NAME = "All Coin" + private const val URL = "https://www.allcoin.com/api2/pair/%1\$s_%2\$s" + private const val URL_CURRENCY_PAIRS = "https://www.allcoin.com/api2/pairs" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Binance.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Binance.kt new file mode 100644 index 00000000..1bf1c83a --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Binance.kt @@ -0,0 +1,57 @@ +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 Binance : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bidPrice") + ticker.ask = jsonObject.getDouble("askPrice") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("highPrice") + ticker.low = jsonObject.getDouble("lowPrice") + ticker.last = jsonObject.getDouble("lastPrice") + } + + // ==================== + // 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) { + val jsonObject = JSONObject(responseString) + val jsonSymbols = jsonObject.getJSONArray("symbols") + for (i in 0 until jsonSymbols.length()) { + val marketJsonObject = jsonSymbols.getJSONObject(i) + val status = marketJsonObject.getString("status") + if (status != "TRADING") { + continue + } + val symbol = marketJsonObject.getString("symbol") + val baseAsset = marketJsonObject.getString("baseAsset") + val quoteAsset = marketJsonObject.getString("quoteAsset") + pairs.add(CurrencyPairInfo( + baseAsset, + quoteAsset, + symbol)) + } + } + + companion object { + private const val NAME = "Binance" + private const val TTS_NAME = NAME + private const val URL = "https://api.binance.com/api/v3/ticker/24hr?symbol=%1\$s" + private const val URL_CURRENCY_PAIRS = "https://api.binance.com/api/v3/exchangeInfo" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bit2c.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bit2c.kt new file mode 100644 index 00000000..8f051b8a --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bit2c.kt @@ -0,0 +1,52 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class Bit2c : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Bit2c" + private const val TTS_NAME = "Bit 2c" + private const val URL = "https://www.bit2c.co.il/Exchanges/%1\$s%2\$s/Ticker.json" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + //GET https://bit2c.co.il/Exchanges/[BtcNis/EthNis/BchNis/LtcNis/EtcNis/BtgNis]/Ticker.json + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.NIS + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + Currency.NIS + ) + CURRENCY_PAIRS[VirtualCurrency.BCH] = arrayOf( + Currency.NIS + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.NIS + ) + CURRENCY_PAIRS[VirtualCurrency.ETC] = arrayOf( + Currency.NIS + ) + CURRENCY_PAIRS[VirtualCurrency.BTG] = arrayOf( + Currency.NIS + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("h") + ticker.ask = jsonObject.getDouble("l") + ticker.vol = jsonObject.getDouble("a") + ticker.last = jsonObject.getDouble("ll") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitBay.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitBay.kt new file mode 100644 index 00000000..df540255 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitBay.kt @@ -0,0 +1,76 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BitBay : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "BitBay.net" + private const val TTS_NAME = "Bit Bay" + private const val URL = "https://bitbay.net/API/Public/%1\$s%2\$s/ticker.json" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BCC] = arrayOf( + VirtualCurrency.BTC, + Currency.PLN, + Currency.USD, + Currency.EUR + ) + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.PLN, + Currency.USD, + Currency.EUR + ) + CURRENCY_PAIRS[VirtualCurrency.DASH] = arrayOf( + VirtualCurrency.BTC, + Currency.PLN, + Currency.USD, + Currency.EUR + ) + CURRENCY_PAIRS[VirtualCurrency.GAME] = arrayOf( + VirtualCurrency.BTC, + Currency.PLN, + Currency.USD, + Currency.EUR + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + VirtualCurrency.BTC, + Currency.PLN, + Currency.USD, + Currency.EUR + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + VirtualCurrency.BTC, + Currency.PLN, + Currency.USD, + Currency.EUR + ) + CURRENCY_PAIRS[VirtualCurrency.LSK] = arrayOf( + VirtualCurrency.BTC, + Currency.PLN, + Currency.USD, + Currency.EUR + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("max") + ticker.low = jsonObject.getDouble("min") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitFlyer.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitFlyer.kt new file mode 100644 index 00000000..55515c65 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitFlyer.kt @@ -0,0 +1,37 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BitFlyer : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "bitFlyer" + private const val TTS_NAME = "bit flyer" + private const val URL = "https://api.bitflyer.jp/v1/ticker?product_code=%1\$s_%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.JPY) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + VirtualCurrency.BTC) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + 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_by_product") + ticker.last = jsonObject.getDouble("ltp") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitFlyerFX.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitFlyerFX.kt new file mode 100644 index 00000000..574aca0f --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitFlyerFX.kt @@ -0,0 +1,35 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BitFlyerFX : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "bitFlyer FX" + private const val TTS_NAME = "bit flyer FX" + private const val URL = "https://api.bitflyer.jp/v1/ticker?product_code=FX_%1\$s_%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.JPY) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + 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_by_product") + ticker.last = jsonObject.getDouble("ltp") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitKonan.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitKonan.kt new file mode 100644 index 00000000..3c7e05b5 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitKonan.kt @@ -0,0 +1,46 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BitKonan : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "BitKonan" + private const val TTS_NAME = "Bit Konan" + private const val URL_BTC = "https://bitkonan.com/api/ticker" + private const val URL_LTC = "https://bitkonan.com/api/ltc_ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.USD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return if (VirtualCurrency.BTC == checkerInfo.currencyBase) { + URL_BTC + } else { + URL_LTC + } + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitMEX.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitMEX.kt new file mode 100644 index 00000000..11ca54aa --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitMEX.kt @@ -0,0 +1,79 @@ +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 +import java.text.SimpleDateFormat +import java.util.* + +class BitMEX : Market(NAME, TTS_NAME, null) { + companion object { + private const val NAME = "BitMEX" + private const val TTS_NAME = NAME + private const val URL = "https://www.bitmex.com/api/v1/instrument" + + "?symbol=%1\$s" + + "&columns=bidPrice,askPrice,turnover24h,highPrice,lowPrice,lastPrice" + private const val URL_CURRENCY_PAIRS = "https://www.bitmex.com/api/v1/instrument" + + "?columns=rootSymbol,typ" + + "&filter={\"state\":\"Open\"}" + private val ISO_DATE_FORMAT = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH) + + init { + ISO_DATE_FORMAT.timeZone = TimeZone.getTimeZone("GMT") + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTicker(requestId: Int, responseString: String, ticker: Ticker, checkerInfo: CheckerInfo) { + parseTickerFromJsonObject(requestId, JSONArray(responseString).getJSONObject(0), ticker, checkerInfo) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bidPrice") + ticker.ask = jsonObject.getDouble("askPrice") + // This comes back in Satoshis + ticker.vol = jsonObject.getDouble("turnover24h") / 1e8 + if (!jsonObject.isNull("highPrice")) ticker.high = jsonObject.getDouble("highPrice") + if (!jsonObject.isNull("lowPrice")) ticker.low = jsonObject.getDouble("lowPrice") + ticker.last = jsonObject.getDouble("lastPrice") + // This is an ISO timestamp representing UTC time + ticker.timestamp = ISO_DATE_FORMAT.parse(jsonObject.getString("timestamp")).time + } + + // ==================== + // 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) { + val instruments = JSONArray(responseString) + for (i in 0 until instruments.length()) { + parseCurrencyPairsFromJsonObject(requestId, instruments.getJSONObject(i), pairs) + } + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + var base = jsonObject.getString("rootSymbol") + val id = jsonObject.getString("symbol") + var quote = id.substring(id.indexOf(base) + base.length) + + // Binary + if (jsonObject.getString("typ") == "FFICSX") { + quote = base + base = "BINARY" + } + pairs.add(CurrencyPairInfo(base, quote, id)) + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitMaszyna.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitMaszyna.kt new file mode 100644 index 00000000..371d7317 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitMaszyna.kt @@ -0,0 +1,41 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BitMaszyna : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "BitMaszyna.pl" + private const val TTS_NAME = "Bit Maszyna" + private const val URL = "https://bitmaszyna.pl/api/%1\$s%2\$s/ticker.json" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.PLN + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.PLN + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume1") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitTrex.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitTrex.kt new file mode 100644 index 00000000..b4843b84 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitTrex.kt @@ -0,0 +1,47 @@ +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 BitTrex : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyCounter, checkerInfo.currencyBase) // reversed + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val resultJsonObject = jsonObject.getJSONObject("result") + ticker.bid = resultJsonObject.getDouble("Bid") + ticker.ask = resultJsonObject.getDouble("Ask") + ticker.last = resultJsonObject.getDouble("Last") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val resultJsonArray = jsonObject.getJSONArray("result") + for (i in 0 until resultJsonArray.length()) { + val marketJsonObject = resultJsonArray.getJSONObject(i) + pairs.add(CurrencyPairInfo( + marketJsonObject.getString("MarketCurrency"), // reversed + marketJsonObject.getString("BaseCurrency"), // reversed + marketJsonObject.getString("MarketName"))) + } + } + + companion object { + private const val NAME = "BitTrex" + private const val TTS_NAME = "Bit Trex" + 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" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitX.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitX.kt new file mode 100644 index 00000000..9e3cf0ec --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitX.kt @@ -0,0 +1,83 @@ +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 com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BitX : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Luno" + private const val TTS_NAME = NAME + private const val URL = "https://api.mybitx.com/api/1/ticker?pair=%1\$s" + private const val URL_CURRENCY_PAIRS = "https://api.mybitx.com/api/1/tickers" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.IDR, + Currency.SGD, + Currency.MYR, + Currency.NGN, + Currency.ZAR + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + val pairString: String? + pairString = checkerInfo.currencyPairId + ?: String.format("%1\$s%2\$s", fixCurrency(checkerInfo.currencyBase), fixCurrency(checkerInfo.currencyCounter)) + return String.format(URL, pairString) + } + + private fun fixCurrency(currency: String): String { + if (VirtualCurrency.BTC == currency) { + return VirtualCurrency.XBT + } else if (VirtualCurrency.XBT == currency) { + return VirtualCurrency.BTC + } + return currency + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("rolling_24_hour_volume") + ticker.last = jsonObject.getDouble("last_trade") + ticker.timestamp = jsonObject.getLong("timestamp") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val dataJsonArray = jsonObject.getJSONArray("tickers") + for (i in 0 until dataJsonArray.length()) { + val currencyPair = dataJsonArray.getJSONObject(i).getString("pair") ?: continue + var currencyBase: String + var currencyCounter: String + try { + currencyBase = fixCurrency(currencyPair.substring(0, 3)) + currencyCounter = fixCurrency(currencyPair.substring(3)) + } catch (e: Exception) { + continue + } + pairs.add(CurrencyPairInfo( + currencyBase, + currencyCounter, + currencyPair + )) + } + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinCoId.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinCoId.kt new file mode 100644 index 00000000..6409d544 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinCoId.kt @@ -0,0 +1,58 @@ +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 +import java.util.* + +class BitcoinCoId : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + var pairId = checkerInfo.currencyPairId + if (pairId == null) { + pairId = String.format("%1\$s_%2\$s", checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + 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 = tickerJsonObject.getDouble("buy") + ticker.ask = tickerJsonObject.getDouble("sell") + ticker.vol = tickerJsonObject.getDouble("vol_" + checkerInfo.currencyBaseLowerCase) + ticker.high = tickerJsonObject.getDouble("high") + ticker.low = tickerJsonObject.getDouble("low") + ticker.last = tickerJsonObject.getDouble("last") + ticker.timestamp = tickerJsonObject.getLong("server_time") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val tickersJsonObject = jsonObject.getJSONObject("tickers") + val tickerNamesArray = tickersJsonObject.names() + for (i in 0 until tickerNamesArray.length()) { + val pairId = tickerNamesArray.getString(i) ?: continue + val currencies = pairId.split("_".toRegex()).toTypedArray() + if (currencies.size != 2) continue + val currencyBase = currencies[0].toUpperCase(Locale.ENGLISH) + val currencyCounter = currencies[1].toUpperCase(Locale.ENGLISH) + pairs.add(CurrencyPairInfo(currencyBase, currencyCounter, pairId)) + } + } + + companion object { + private const val NAME = "Bitcoin.co.id" + private const val TTS_NAME = "Bitcoin co id" + private const val URL = "https://vip.bitcoin.co.id/api/%1\$s/ticker/" + private const val URL_CURRENCY_PAIRS = "https://vip.bitcoin.co.id/api/summaries" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinToYou.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinToYou.kt new file mode 100644 index 00000000..619f0ba0 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinToYou.kt @@ -0,0 +1,45 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BitcoinToYou : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "BitcoinToYou" + private const val TTS_NAME = "Bitcoin To You" + private const val URL = "https://back.bitcointoyou.com/api/ticker?pair=%1\$s_%2\$sC" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.BRL + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { +/* + String pairId = checkerInfo.getCurrencyPairId(); + if (pairId == null) { + pairId = String.format("%1$s_%2$s", checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); + } + */ + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerJsonObject = jsonObject.getJSONObject("summary") + // ticker.bid = tickerJsonObject.getDouble("buy"); +// ticker.ask = tickerJsonObject.getDouble("sell"); + ticker.vol = tickerJsonObject.getDouble("amount") + ticker.high = tickerJsonObject.getDouble("high") + ticker.low = tickerJsonObject.getDouble("low") + ticker.last = tickerJsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinTrade.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinTrade.kt new file mode 100644 index 00000000..fe117a61 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinTrade.kt @@ -0,0 +1,45 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BitcoinTrade : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "BitcoinTrade" + private const val TTS_NAME = "Bitcoin Trade" + private const val URL = "https://api.bitcointrade.com.br/v3/public/%1\$s%2\$s/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.BRL + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + Currency.BRL + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.BRL + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyCounter, checkerInfo.currencyBase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataJsonObject = jsonObject.getJSONObject("data") + ticker.bid = dataJsonObject.getDouble("buy") + ticker.ask = dataJsonObject.getDouble("sell") + ticker.vol = dataJsonObject.getDouble("volume") + ticker.high = dataJsonObject.getDouble("high") + ticker.low = dataJsonObject.getDouble("low") + ticker.last = dataJsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinVenezuela.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinVenezuela.kt new file mode 100644 index 00000000..830c45ce --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitcoinVenezuela.kt @@ -0,0 +1,53 @@ +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 com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import org.json.JSONObject + +class BitcoinVenezuela : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTicker(requestId: Int, responseString: String, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.last = responseString.trim { it <= ' ' }.toDouble() + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + parseCurrencyPairsFromCurrencyBase(VirtualCurrency.BTC, jsonObject, pairs) + parseCurrencyPairsFromCurrencyBase(VirtualCurrency.LTC, jsonObject, pairs) + parseCurrencyPairsFromCurrencyBase(VirtualCurrency.MSC, jsonObject, pairs) + } + + @Throws(Exception::class) + private fun parseCurrencyPairsFromCurrencyBase(currencyBase: String, jsonObject: JSONObject, pairs: MutableList) { + if (!jsonObject.has(currencyBase)) return + val currencyBaseJsonObject = jsonObject.getJSONObject(currencyBase) + val counterCurrencyNames = currencyBaseJsonObject.names() + for (i in 0 until counterCurrencyNames.length()) { + pairs.add(CurrencyPairInfo( + currencyBase, + counterCurrencyNames.getString(i), + null)) + } + } + + companion object { + private const val NAME = "BitcoinVenezuela" + private const val TTS_NAME = "Bitcoin Venezuela" + private const val URL = "https://api.bitcoinvenezuela.com/?html=no¤cy=%1\$s&amount=1&to=%2\$s" + private const val URL_CURRENCY_PAIRS = "https://api.bitcoinvenezuela.com/" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitexLa.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitexLa.kt new file mode 100644 index 00000000..1bc02791 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitexLa.kt @@ -0,0 +1,38 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BitexLa : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Bitex.la" + private const val TTS_NAME = "Bitex" + private const val URL = "https://bitex.la/api-v1/rest/btc/market/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitfinex.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitfinex.kt new file mode 100644 index 00000000..d807246b --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitfinex.kt @@ -0,0 +1,136 @@ +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 com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONArray +import java.util.* + +class Bitfinex : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Bitfinex" + private const val TTS_NAME = NAME + private const val URL = "https://api-pub.bitfinex.com/v2/ticker/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://api-pub.bitfinex.com/v2/tickers?symbols=ALL" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BCC] = arrayOf( + VirtualCurrency.BTC, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.BCH] = arrayOf( + VirtualCurrency.BTC, + VirtualCurrency.ETH, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.BCU] = arrayOf( + VirtualCurrency.BTC, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.DSH] = arrayOf( + VirtualCurrency.BTC, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.EOS] = arrayOf( + VirtualCurrency.BTC, + VirtualCurrency.ETH, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.ETC] = arrayOf( + VirtualCurrency.BTC, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + VirtualCurrency.BTC, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.IOT] = arrayOf( + VirtualCurrency.BTC, + VirtualCurrency.ETH, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + VirtualCurrency.BTC, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.OMG] = arrayOf( + VirtualCurrency.BTC, + VirtualCurrency.ETH, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.RRT] = arrayOf( + VirtualCurrency.BTC, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.SAN] = arrayOf( + VirtualCurrency.BTC, + VirtualCurrency.ETH, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.XMR] = arrayOf( + VirtualCurrency.BTC, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.XRP] = arrayOf( + VirtualCurrency.BTC, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.ZEC] = arrayOf( + VirtualCurrency.BTC, + Currency.USD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + var pairId = checkerInfo.currencyPairId + if (pairId == null) { + pairId = String.format("t%1\$s%2\$s", + checkerInfo.currencyBase.toUpperCase(Locale.ROOT), + checkerInfo.currencyCounter.toUpperCase(Locale.ROOT)) + } + return String.format(URL, pairId) + } + + @Throws(Exception::class) + override fun parseTicker(requestId: Int, responseString: String, ticker: Ticker, checkerInfo: CheckerInfo) { + val jsonArray = JSONArray(responseString) + ticker.bid = jsonArray.getDouble(0) + ticker.ask = jsonArray.getDouble(2) + ticker.last = jsonArray.getDouble(6) + ticker.vol = jsonArray.getDouble(7) + ticker.high = jsonArray.getDouble(8) + ticker.low = jsonArray.getDouble(9) + } + + // ==================== + // 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) { + val pairsArray = JSONArray(responseString) + for (i in 0 until pairsArray.length()) { + val pairArray = pairsArray.getJSONArray(i) + val pairId = pairArray.getString(0) + if (pairId != null && pairId.length == 7) { + // pairId example "tBTCUSD" + pairs.add(CurrencyPairInfo( + pairId.substring(1, 4).toUpperCase(Locale.US), + pairId.substring(4).toUpperCase(Locale.US), + pairId)) + } + } + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bithumb.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bithumb.kt new file mode 100644 index 00000000..c5fe89bb --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bithumb.kt @@ -0,0 +1,99 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class Bithumb : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Bithumb" + private const val TTS_NAME = NAME + private const val URL_TICKER = "https://api.bithumb.com/public/ticker/%1\$s" + private const val URL_ORDERS = "https://api.bithumb.com/public/orderbook/%1\$s?count=1" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.ETC] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.DASH] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.XRP] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.BCH] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.XMR] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.ZEC] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.QTUM] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.CON] = arrayOf( + Currency.KRW + ) + } + } + + override fun getNumOfRequests(checkerRecord: CheckerInfo?): Int { + return 2 + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return if (requestId == 0) { + String.format(URL_TICKER, checkerInfo.currencyBaseLowerCase) + } else { + String.format(URL_ORDERS, checkerInfo.currencyBaseLowerCase) + } + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, + checkerInfo: CheckerInfo) { + val dataObject = jsonObject.getJSONObject("data") + if (requestId == 0) { + ticker.vol = dataObject.getDouble("units_traded_24H") + ticker.high = dataObject.getDouble("max_price") + ticker.low = dataObject.getDouble("min_price") + ticker.last = dataObject.getDouble("closing_price") + ticker.timestamp = dataObject.getLong("date") + } else { + ticker.bid = getFirstPriceFromOrder(dataObject, "bids") + ticker.ask = getFirstPriceFromOrder(dataObject, "asks") + } + } + + @Throws(Exception::class) + override fun parseErrorFromJsonObject(requestId: Int, jsonObject: JSONObject, + checkerInfo: CheckerInfo?): String? { + return jsonObject.getString("message") + } + + @Throws(Exception::class) + private fun getFirstPriceFromOrder(jsonObject: JSONObject, key: String): Double { + val array = jsonObject.getJSONArray(key) + if (array.length() == 0) { + return Ticker.NO_DATA.toDouble() + } + val first = array.getJSONObject(0) + return first.getDouble("price") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitoEX.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitoEX.kt new file mode 100644 index 00000000..a508213e --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitoEX.kt @@ -0,0 +1,37 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONArray + +class BitoEX : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "BitoEX" + private const val TTS_NAME = NAME + private const val URL = "https://www.bitoex.com/sync/dashboard/%1\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.TWD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, System.currentTimeMillis()) + } + + @Throws(Exception::class) + override fun parseTicker(requestId: Int, responseString: String, ticker: Ticker, checkerInfo: CheckerInfo) { + val jsonArray = JSONArray(responseString) + ticker.ask = jsonArray.getString(0).replace(",".toRegex(), "").toDouble() + ticker.bid = jsonArray.getString(1).replace(",".toRegex(), "").toDouble() + ticker.last = ticker.ask + ticker.timestamp = java.lang.Long.valueOf(jsonArray.getString(2)) + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitorado.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitorado.kt new file mode 100644 index 00000000..281181fc --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitorado.kt @@ -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 Bitorado : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val resultObject = jsonObject.getJSONObject("result") + ticker.bid = resultObject.optDouble("buy", Ticker.NO_DATA.toDouble()) + ticker.ask = resultObject.optDouble("sell", Ticker.NO_DATA.toDouble()) + ticker.vol = resultObject.optDouble("vol", Ticker.NO_DATA.toDouble()) + ticker.high = resultObject.optDouble("high", Ticker.NO_DATA.toDouble()) + ticker.low = resultObject.optDouble("low", Ticker.NO_DATA.toDouble()) + ticker.last = resultObject.optDouble("last", 0.0) + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val result = jsonObject.getJSONObject("result") + val markets = result.getJSONObject("markets") + val pairNames = markets.names() + for (i in 0 until pairNames.length()) { + val pairId = pairNames.getString(i) ?: continue + val currencies = pairId.split("-".toRegex()).toTypedArray() + if (currencies.size != 2) continue + pairs.add(CurrencyPairInfo(currencies[0], currencies[1], pairId)) + } + } + + companion object { + private const val NAME = "Bitorado" + private const val TTS_NAME = NAME + private const val URL = "https://www.bitorado.com/api/market/%1\$s-%2\$s/ticker" + private const val URL_CURRENCY_PAIRS = "https://www.bitorado.com/api/ticker" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitso.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitso.kt new file mode 100644 index 00000000..f53616a6 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitso.kt @@ -0,0 +1,80 @@ +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 com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import com.aneonex.bitcoinchecker.datamodule.util.ParseUtils +import org.json.JSONObject +import java.util.* + +class Bitso : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Bitso" + private const val TTS_NAME = NAME + private const val URL = "https://api.bitso.com/public/info" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.MXN + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + VirtualCurrency.BTC, + Currency.MXN + ) + CURRENCY_PAIRS[VirtualCurrency.XRP] = arrayOf( + VirtualCurrency.BTC, + Currency.MXN + ) + CURRENCY_PAIRS[VirtualCurrency.BCH] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + VirtualCurrency.BTC, + Currency.MXN + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + var pairId = checkerInfo.currencyPairId + if (pairId == null) { + pairId = checkerInfo.currencyBaseLowerCase + "_" + checkerInfo.currencyCounterLowerCase + } + val pairJsonObject = jsonObject.getJSONObject(pairId) + ticker.bid = ParseUtils.getDoubleFromString(pairJsonObject, "buy") + ticker.ask = ParseUtils.getDoubleFromString(pairJsonObject, "sell") + ticker.vol = ParseUtils.getDoubleFromString(pairJsonObject, "volume") + ticker.last = ParseUtils.getDoubleFromString(pairJsonObject, "rate") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairIds = jsonObject.names() + for (i in 0 until pairIds.length()) { + val pairId = pairIds.getString(i) ?: continue + val currencies = pairId.split("_".toRegex()).toTypedArray() + if (currencies.size != 2) continue + pairs.add(CurrencyPairInfo( + currencies[0].toUpperCase(Locale.US), + currencies[1].toUpperCase(Locale.US), + pairId)) + } + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitstamp.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitstamp.kt new file mode 100644 index 00000000..3fa906c4 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bitstamp.kt @@ -0,0 +1,79 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class Bitstamp : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Bitstamp" + private const val TTS_NAME = NAME + private const val URL = "https://www.bitstamp.net/api/v2/ticker/%1\$s%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.EUR, + Currency.USD, + Currency.GBP + ) + CURRENCY_PAIRS[VirtualCurrency.BCH] = arrayOf( + VirtualCurrency.BTC, + Currency.EUR, + Currency.USD, + Currency.GBP + ) + CURRENCY_PAIRS[Currency.EUR] = arrayOf( + Currency.USD, + Currency.GBP + ) + CURRENCY_PAIRS[Currency.GBP] = arrayOf( + Currency.EUR, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + VirtualCurrency.BTC, + Currency.EUR, + Currency.USD, + Currency.GBP + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + VirtualCurrency.BTC, + Currency.EUR, + Currency.USD, + Currency.GBP + ) + CURRENCY_PAIRS[VirtualCurrency.XLM] = arrayOf( + VirtualCurrency.BTC, + Currency.EUR, + Currency.USD, + Currency.GBP + ) + CURRENCY_PAIRS[VirtualCurrency.XRP] = arrayOf( + VirtualCurrency.BTC, + Currency.EUR, + Currency.USD, + Currency.GBP + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + ticker.timestamp = jsonObject.getLong("timestamp") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitxCom.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitxCom.kt new file mode 100644 index 00000000..751679b4 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BitxCom.kt @@ -0,0 +1,61 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BitxCom : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "CoinsBank" + private const val TTS_NAME = NAME + private const val URL = "https://coinsbank.com/api/public/ticker?pair=%1\$s%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.EUR, + Currency.GBP, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + VirtualCurrency.BTC, + Currency.EUR, + Currency.GBP, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.GHS] = arrayOf( + VirtualCurrency.BTC, + Currency.EUR, + Currency.GBP, + VirtualCurrency.LTC, + Currency.USD + ) + CURRENCY_PAIRS[Currency.EUR] = arrayOf( + Currency.GBP, + Currency.USD + ) + CURRENCY_PAIRS[Currency.GBP] = arrayOf( + Currency.USD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataJsonObject = jsonObject.getJSONObject("data") + ticker.bid = dataJsonObject.getDouble("buy") + ticker.ask = dataJsonObject.getDouble("sell") + ticker.vol = dataJsonObject.getDouble("volume") + ticker.high = dataJsonObject.getDouble("high") + ticker.low = dataJsonObject.getDouble("low") + ticker.last = dataJsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bl3p.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bl3p.kt new file mode 100644 index 00000000..2b3cb862 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bl3p.kt @@ -0,0 +1,42 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class Bl3p : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "BL3P" + private const val TTS_NAME = NAME + private const val URL = "https://api.bl3p.eu/1/%1\$s%2\$s/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.EUR + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.EUR + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getJSONObject("volume").getDouble("24h") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + ticker.timestamp = jsonObject.getLong("timestamp") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bleutrade.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bleutrade.kt new file mode 100644 index 00000000..686caa78 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bleutrade.kt @@ -0,0 +1,65 @@ +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 Bleutrade : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val resultObject = jsonObject["result"] + var resultsJsonObject: JSONObject? = null + resultsJsonObject = if (resultObject is JSONArray) { + resultObject.getJSONObject(0) + } else { + resultObject as JSONObject + } + ticker.bid = resultsJsonObject!!.getDouble("Bid") + ticker.ask = resultsJsonObject.getDouble("Ask") + ticker.last = resultsJsonObject.getDouble("Last") + } + + @Throws(Exception::class) + override fun parseErrorFromJsonObject(requestId: Int, jsonObject: JSONObject, checkerInfo: CheckerInfo?): String? { + return jsonObject.getString("message") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val resultsJsonArray = jsonObject.getJSONArray("result") + for (i in 0 until resultsJsonArray.length()) { + val pairJsonObject = resultsJsonArray.getJSONObject(i) + val pairId = pairJsonObject.getString("MarketName") + val currencyBase = pairJsonObject.getString("MarketCurrency") + val currencyCounter = pairJsonObject.getString("BaseCurrency") + if (pairId != null && currencyBase != null && currencyCounter != null) { + pairs.add(CurrencyPairInfo( + currencyBase, + currencyCounter, + pairId + )) + } + } + } + + companion object { + private const val NAME = "Bleutrade" + private const val TTS_NAME = NAME + private const val URL = "https://bleutrade.com/api/v2/public/getticker?market=%1\$s" + private const val URL_CURRENCY_PAIRS = "https://bleutrade.com/api/v2/public/getmarkets" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BlinkTrade.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BlinkTrade.kt new file mode 100644 index 00000000..04838c8e --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BlinkTrade.kt @@ -0,0 +1,43 @@ +/** + * Author: Jorge Pereira @gmail.com> + * Date: Fri Dec 8 15:07:27 -02 2017 + * Desc: Blinktrade market + */ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BlinkTrade : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "BlinkTrade" + private const val TTS_NAME = "Blink Trade" + private const val URL = "https://bitcambioapi.blinktrade.com/api/v1/%2\$s/ticker?crypto_currency=%1\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.BRL + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("buy") + ticker.ask = jsonObject.getDouble("sell") + ticker.vol = jsonObject.getDouble("vol") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Braziliex.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Braziliex.kt new file mode 100644 index 00000000..9b8243fa --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Braziliex.kt @@ -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 +import java.util.* + +class Braziliex : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("highestBid") + ticker.ask = jsonObject.getDouble("lowestAsk") + ticker.vol = jsonObject.getDouble("baseVolume24") + ticker.high = jsonObject.getDouble("highestBid24") + ticker.low = jsonObject.getDouble("lowestAsk24") + ticker.last = jsonObject.getDouble("last") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairIds = jsonObject.names() + for (i in 0 until pairIds.length()) { + val pairId = pairIds.getString(i) ?: continue + val currencies = pairId.split("_".toRegex()).toTypedArray() + if (currencies.size != 2) continue + val currencyBase = currencies[0].toUpperCase(Locale.ENGLISH) + val currencyCounter = currencies[1].toUpperCase(Locale.ENGLISH) + pairs.add(CurrencyPairInfo(currencyBase, currencyCounter, pairId)) + } + } + + companion object { + private const val NAME = "Braziliex" + private const val TTS_NAME = NAME + private const val URL = "https://braziliex.com/api/v1/public/ticker/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://braziliex.com/api/v1/public/ticker" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Btc38.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Btc38.kt new file mode 100644 index 00000000..fcea9559 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Btc38.kt @@ -0,0 +1,61 @@ +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 com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import org.json.JSONObject +import java.util.* + +class Btc38 : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerJsonObject = jsonObject.getJSONObject("ticker") + ticker.bid = tickerJsonObject.getDouble("buy") + ticker.ask = tickerJsonObject.getDouble("sell") + ticker.vol = tickerJsonObject.getDouble("vol") + ticker.high = tickerJsonObject.getDouble("high") + ticker.low = tickerJsonObject.getDouble("low") + ticker.last = tickerJsonObject.getDouble("last") + } + + // ==================== + // Get currency pairs + // ==================== + override val currencyPairsNumOfRequests: Int + get() = 2 + + private fun getCurrencyCounter(requestId: Int): String { + return if (requestId == 0) Currency.CNY else VirtualCurrency.BTC + } + + override fun getCurrencyPairsUrl(requestId: Int): String? { + return String.format(URL_CURRENCY_PAIRS, getCurrencyCounter(requestId).toLowerCase(Locale.ENGLISH)) + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val currencyCounter = getCurrencyCounter(requestId) + val currencyBaseList = jsonObject.names() + for (i in 0 until currencyBaseList.length()) { + pairs.add(CurrencyPairInfo( + currencyBaseList.getString(i).toUpperCase(Locale.ENGLISH), + currencyCounter, + null + )) + } + } + + companion object { + private const val NAME = "Btc38" + private const val TTS_NAME = "BTC 38" + private const val URL = "http://api.btc38.com/v1/ticker.php?c=%1\$s&mk_type=%2\$s" + private const val URL_CURRENCY_PAIRS = "http://api.btc38.com/v1/ticker.php?c=all&mk_type=%1\$s" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BtcBox.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BtcBox.kt new file mode 100644 index 00000000..ef18c5f5 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BtcBox.kt @@ -0,0 +1,38 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BtcBox : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "BtcBox" + private const val TTS_NAME = "BTC Box" + private const val URL = "https://www.btcbox.co.jp/api/v1/ticker/" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.JPY + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("buy") + ticker.ask = jsonObject.getDouble("sell") + ticker.vol = jsonObject.getDouble("vol") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BtcMarkets.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BtcMarkets.kt new file mode 100644 index 00000000..f3b0da8e --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BtcMarkets.kt @@ -0,0 +1,56 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class BtcMarkets : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "BtcMarkets.net" + private const val TTS_NAME = "BTC Markets net" + private const val URL = "https://api.btcmarkets.net/market/%1\$s/%2\$s/tick" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.AUD + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + VirtualCurrency.BTC, + Currency.AUD + ) + CURRENCY_PAIRS[VirtualCurrency.ETC] = arrayOf( + VirtualCurrency.BTC, + Currency.AUD + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + VirtualCurrency.BTC, + Currency.AUD + ) + CURRENCY_PAIRS[VirtualCurrency.XRP] = arrayOf( + VirtualCurrency.BTC, + Currency.AUD + ) + CURRENCY_PAIRS[VirtualCurrency.BCH] = arrayOf( + VirtualCurrency.BTC, + Currency.AUD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bestBid") + ticker.ask = jsonObject.getDouble("bestAsk") + ticker.last = jsonObject.getDouble("lastPrice") + ticker.timestamp = jsonObject.getLong("timestamp") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BtcXIndia.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BtcXIndia.kt new file mode 100644 index 00000000..f51998e2 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/BtcXIndia.kt @@ -0,0 +1,39 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import com.aneonex.bitcoinchecker.datamodule.util.ParseUtils +import org.json.JSONObject + +class BtcXIndia : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "BTCXIndia" + private const val TTS_NAME = "BTC X India" + private const val URL = "https://api.btcxindia.com/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.XRP] = arrayOf( + Currency.INR + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("total_volume_24h") + ticker.high = ParseUtils.getDoubleFromString(jsonObject, "high") + ticker.low = ParseUtils.getDoubleFromString(jsonObject, "low") + ticker.last = jsonObject.getDouble("last_traded_price") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Btcturk.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Btcturk.kt new file mode 100644 index 00000000..8586de7b --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Btcturk.kt @@ -0,0 +1,52 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import com.aneonex.bitcoinchecker.datamodule.util.TimeUtils +import org.json.JSONArray + +class Btcturk : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "BtcTurk" + private const val TTS_NAME = "Btc Turk" + private const val URL = "https://www.btcturk.com/api/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.TRY + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + VirtualCurrency.BTC, + Currency.TRY + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTicker(requestId: Int, responseString: String, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerJsonArray = JSONArray(responseString) + val pairId = checkerInfo.currencyBase + checkerInfo.currencyCounter + for (i in 0 until tickerJsonArray.length()) { + val tickerJsonObject = tickerJsonArray.getJSONObject(i) + if (pairId == tickerJsonObject.getString("pair")) { + ticker.bid = tickerJsonObject.getDouble("bid") + ticker.ask = tickerJsonObject.getDouble("ask") + ticker.vol = tickerJsonObject.getDouble("volume") + ticker.high = tickerJsonObject.getDouble("high") + ticker.low = tickerJsonObject.getDouble("low") + ticker.last = tickerJsonObject.getDouble("last") + ticker.timestamp = (tickerJsonObject.getDouble("timestamp") * TimeUtils.MILLIS_IN_SECOND).toLong() + break + } + } + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bter.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bter.kt new file mode 100644 index 00000000..efb7e59c --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Bter.kt @@ -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 +import java.util.* + +class Bter : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("highestBid") + ticker.ask = jsonObject.getDouble("lowestAsk") + ticker.vol = jsonObject.getDouble("quoteVolume") + ticker.high = jsonObject.getDouble("high24hr") + ticker.low = jsonObject.getDouble("low24hr") + 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) { + val jsonArray = JSONArray(responseString) + for (i in 0 until jsonArray.length()) { + val pairId = jsonArray.getString(i) ?: continue + val currencies = pairId.split("_".toRegex()).toTypedArray() + if (currencies.size != 2) continue + val currencyBase = currencies[0].toUpperCase(Locale.ENGLISH) + val currencyCounter = currencies[1].toUpperCase(Locale.ENGLISH) + pairs.add(CurrencyPairInfo(currencyBase, currencyCounter, pairId)) + } + } + + companion object { + private const val NAME = "Gate.io" + private const val TTS_NAME = "Gate io" + private const val URL = "http://data.gate.io/api2/1/ticker/%1\$s_%2\$s" + private const val URL_CURRENCY_PAIRS = "http://data.gate.io/api2/1/pairs" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Buttercoin.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Buttercoin.kt new file mode 100644 index 00000000..08a6f162 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Buttercoin.kt @@ -0,0 +1,35 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class Buttercoin : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Buttercoin" + private const val TTS_NAME = "Butter coin" + private const val URL = "https://api.buttercoin.com/v1/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CCex.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CCex.kt new file mode 100644 index 00000000..bbce4e39 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CCex.kt @@ -0,0 +1,50 @@ +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 +import java.util.* + +class CCex : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerObject = jsonObject.getJSONObject("ticker") + ticker.bid = tickerObject.getDouble("buy") + ticker.ask = tickerObject.getDouble("sell") + ticker.high = tickerObject.getDouble("high") + ticker.low = tickerObject.getDouble("low") + ticker.last = tickerObject.getDouble("lastprice") + // ticker.timestamp = tickerObject.getLong("updated"); // strange date? + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairsJsonArray = jsonObject.getJSONArray("pairs") + for (i in 0 until pairsJsonArray.length()) { + val pair = pairsJsonArray.getString(i) ?: continue + val currencies: Array = pair.split("-".toRegex(), 2).toTypedArray() + if (currencies.size != 2 || currencies[0] == null || currencies[1] == null) continue + pairs.add(CurrencyPairInfo(currencies[0]!!.toUpperCase(Locale.US), currencies[1]!!.toUpperCase(Locale.US), pair)) + } + } + + companion object { + const val NAME = "C-CEX" + const val TTS_NAME = "C-Cex" + const val URL = "https://c-cex.com/t/%1\$s-%2\$s.json" + const val URL_CURRENCY_PAIRS = "https://c-cex.com/t/pairs.json" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Campbx.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Campbx.kt new file mode 100644 index 00000000..31765759 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Campbx.kt @@ -0,0 +1,35 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class Campbx : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "CampBX" + private const val TTS_NAME = "Camp BX" + private const val URL = "http://campbx.com/api/xticker.php" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("Best Bid") + ticker.ask = jsonObject.getDouble("Best Ask") + ticker.last = jsonObject.getDouble("Last Trade") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CexIO.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CexIO.kt new file mode 100644 index 00000000..7a55c39a --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CexIO.kt @@ -0,0 +1,77 @@ +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 com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class CexIO : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "CEX.IO" + private const val TTS_NAME = "CEX IO" + private const val URL = "https://cex.io/api/ticker/%1\$s/%2\$s" + private const val URL_CURRENCY_PAIRS = "https://cex.io/api/currency_limits" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD, + Currency.EUR, + Currency.GBP, + Currency.RUB) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.GHS] = arrayOf( + VirtualCurrency.BTC) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + if (jsonObject.has("bid")) { + ticker.bid = jsonObject.getDouble("bid") + } + if (jsonObject.has("ask")) { + ticker.ask = jsonObject.getDouble("ask") + } + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val dataJsonObject = jsonObject.getJSONObject("data") + val pairsJsonArray = dataJsonObject.getJSONArray("pairs") + for (i in 0 until pairsJsonArray.length()) { + val pairJsonObject = pairsJsonArray.getJSONObject(i) + val currencyBase = pairJsonObject.getString("symbol1") + val currencyCounter = pairJsonObject.getString("symbol2") + if (currencyBase != null && currencyCounter != null) { + pairs.add(CurrencyPairInfo( + currencyBase, + currencyCounter, + null)) + } + } + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ChileBit.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ChileBit.kt new file mode 100644 index 00000000..60e6e163 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ChileBit.kt @@ -0,0 +1,38 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class ChileBit : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "ChileBit.net" + private const val TTS_NAME = "Chile Bit" + private const val URL = "https://api.blinktrade.com/api/v1/%2\$s/ticker?crypto_currency=%1\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.CLP + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("buy") + ticker.ask = jsonObject.getDouble("sell") + ticker.vol = jsonObject.getDouble("vol") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CleverCoin.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CleverCoin.kt new file mode 100644 index 00000000..c03dc16b --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CleverCoin.kt @@ -0,0 +1,39 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class CleverCoin : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "CleverCoin" + private const val TTS_NAME = "Clever Coin" + private const val URL = "https://api.clevercoin.com/v1/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.EUR + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + ticker.timestamp = jsonObject.getLong("timestamp") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinDesk.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinDesk.kt new file mode 100644 index 00000000..7db3b1bb --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinDesk.kt @@ -0,0 +1,44 @@ +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 com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import org.json.JSONObject + +class CoinDesk : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val bpiJsonObject = jsonObject.getJSONObject("bpi") + val pairJsonObject = bpiJsonObject.getJSONObject(checkerInfo.currencyCounter) + ticker.last = pairJsonObject.getDouble("rate_float") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val bpiJsonObject = jsonObject.getJSONObject("bpi") + val currencyCounterNames = bpiJsonObject.names() + for (i in 0 until currencyCounterNames.length()) { + pairs.add(CurrencyPairInfo(VirtualCurrency.BTC, currencyCounterNames.getString(i), null)) + } + } + + companion object { + private const val NAME = "CoinDesk" + private const val TTS_NAME = "Coin Desk" + private const val URL = "https://api.coindesk.com/v1/bpi/currentprice.json" + private const val URL_CURRENCY_PAIRS = URL + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinFloor.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinFloor.kt new file mode 100644 index 00000000..0f05b9f5 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinFloor.kt @@ -0,0 +1,43 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class CoinFloor : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Coinfloor" + private const val TTS_NAME = "Coin Floor" + private const val URL = "https://webapi.coinfloor.co.uk:8090/bist/%1\$s/%2\$s/ticker/" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.XBT] = arrayOf( + Currency.GBP, + Currency.EUR, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.BCH] = arrayOf( + Currency.GBP + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinJar.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinJar.kt new file mode 100644 index 00000000..af19e5c5 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinJar.kt @@ -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 CoinJar : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val ratesJsonObject = jsonObject.getJSONObject("exchange_rates") + val pairJsonObject = ratesJsonObject.getJSONObject(checkerInfo.currencyPairId) + ticker.bid = pairJsonObject.getDouble("bid") + ticker.ask = pairJsonObject.getDouble("ask") + ticker.last = pairJsonObject.getDouble("midpoint") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val ratesJsonObject = jsonObject.getJSONObject("exchange_rates") + val namesJsonArray = ratesJsonObject.names() + for (i in 0 until namesJsonArray.length()) { + val symbol = namesJsonArray.getString(i) + val pairJsonObject = ratesJsonObject.getJSONObject(symbol) + pairs.add(CurrencyPairInfo( + pairJsonObject.getString("base_currency"), + pairJsonObject.getString("counter_currency"), + symbol + )) + } + } + + companion object { + private const val NAME = "CoinJar" + private const val TTS_NAME = "Coin Jar" + private const val URL = "https://api.coinjar.com/v3/exchange_rates" + private const val URL_CURRENCY_PAIRS = URL + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinMarketIO.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinMarketIO.kt new file mode 100644 index 00000000..cba9cedf --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinMarketIO.kt @@ -0,0 +1,78 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import org.json.JSONObject + +class CoinMarketIO : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "CoinMarket.io" + private const val TTS_NAME = "Coin Market IO" + private const val URL = "https://coinmarket.io/ticker/%1\$s%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.LEAF] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.USDE] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.DGB] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.KDC] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.CON] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.NOBL] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.SMC] = arrayOf( + VirtualCurrency.BTC + ) + // CURRENCY_PAIRS.put(VirtualCurrency.PRT, new String[]{ +// VirtualCurrency.BTC +// }); + CURRENCY_PAIRS[VirtualCurrency.VTC] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.UTC] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.KARM] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.RDD] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.RPD] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.ICN] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.PENG] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.MINT] = arrayOf( + VirtualCurrency.BTC + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.vol = jsonObject.getDouble("volume24") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinMateIO.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinMateIO.kt new file mode 100644 index 00000000..5db7772b --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinMateIO.kt @@ -0,0 +1,45 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class CoinMateIO : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "CoinMate.io" + private const val TTS_NAME = "Coin Mate" + private const val URL = "https://coinmate.io/api/ticker?currencyPair=%1\$s_%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.EUR, + Currency.CZK + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataJsonObject = jsonObject.getJSONObject("data") + ticker.bid = dataJsonObject.getDouble("bid") + ticker.ask = dataJsonObject.getDouble("ask") + ticker.vol = dataJsonObject.getDouble("amount") + ticker.high = dataJsonObject.getDouble("high") + ticker.low = dataJsonObject.getDouble("low") + ticker.last = dataJsonObject.getDouble("last") + } + + @Throws(Exception::class) + override fun parseErrorFromJsonObject(requestId: Int, jsonObject: JSONObject, checkerInfo: CheckerInfo?): String? { + return jsonObject.getString("errorMessage") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinSecure.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinSecure.kt new file mode 100644 index 00000000..a518a843 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinSecure.kt @@ -0,0 +1,44 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class CoinSecure : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "CoinSecure" + private const val TTS_NAME = "Coin Secure" + private const val URL = "https://api.coinsecure.in/v1/exchange/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.INR + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val messageJsonObject = jsonObject.getJSONObject("message") + ticker.bid = parsePrice(messageJsonObject.getDouble("bid")) + ticker.ask = parsePrice(messageJsonObject.getDouble("ask")) + ticker.vol = messageJsonObject.getDouble("coinvolume") / 100000000 + ticker.high = parsePrice(messageJsonObject.getDouble("high")) + ticker.low = parsePrice(messageJsonObject.getDouble("low")) + ticker.last = parsePrice(messageJsonObject.getDouble("lastPrice")) + // ticker.timestamp = messageJsonObject.getLong("timestamp"); + } + + private fun parsePrice(price: Double): Double { + return price / 100 + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinSwap.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinSwap.kt new file mode 100644 index 00000000..92e72814 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinSwap.kt @@ -0,0 +1,50 @@ +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 CoinSwap : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("dayvolume") + ticker.high = jsonObject.getDouble("dayhigh") + ticker.low = jsonObject.getDouble("daylow") + ticker.last = jsonObject.getDouble("lastprice") + } + + // ==================== + // 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) { + val marketsJsonArray = JSONArray(responseString) + for (i in 0 until marketsJsonArray.length()) { + val marketJsonObject = marketsJsonArray.getJSONObject(i) + pairs.add(CurrencyPairInfo( + marketJsonObject.getString("symbol"), + marketJsonObject.getString("exchange"), + null)) + } + } + + companion object { + private const val NAME = "Coin-Swap" + private const val TTS_NAME = "Coin Swap" + private const val URL = "https://api.coin-swap.net/market/stats/%1\$s/%2\$s" + private const val URL_CURRENCY_PAIRS = "http://api.coin-swap.net/market/summary" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinTraderNet.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinTraderNet.kt new file mode 100644 index 00000000..0cd30e9f --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinTraderNet.kt @@ -0,0 +1,42 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class CoinTraderNet : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "CoinTrader.net" + private const val TTS_NAME = "Coin Trader" + private const val URL = "https://www.cointrader.net/api4/stats/daily/%1\$s%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD, + Currency.CAD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataJsonObject = jsonObject.getJSONObject("data") + val dataNamesArray = dataJsonObject.names() + val tickerJsonObject = dataJsonObject.getJSONObject(dataNamesArray.getString(0)) + ticker.bid = tickerJsonObject.getDouble("bid") + ticker.ask = tickerJsonObject.getDouble("offer") + ticker.vol = tickerJsonObject.getDouble("volume") + ticker.high = tickerJsonObject.getDouble("high") + ticker.low = tickerJsonObject.getDouble("low") + ticker.last = tickerJsonObject.getDouble("lastTradePrice") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinTree.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinTree.kt new file mode 100644 index 00000000..620c7e36 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CoinTree.kt @@ -0,0 +1,35 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class CoinTree : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "CoinTree" + private const val TTS_NAME = "Coin Tree" + private const val URL = "https://www.cointree.com.au/api/price/btc/aud" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.AUD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("Bid") + ticker.ask = jsonObject.getDouble("Ask") + ticker.last = jsonObject.getDouble("Spot") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinapult.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinapult.kt new file mode 100644 index 00000000..0f7cdadf --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinapult.kt @@ -0,0 +1,44 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 com.aneonex.bitcoinchecker.datamodule.util.TimeUtils +import org.json.JSONObject + +class Coinapult : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Coinapult" + private const val TTS_NAME = NAME + private const val URL = "https://api.coinapult.com/api/ticker?market=%2\$s_%1\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD, + Currency.EUR, + Currency.GBP, + Currency.XAG, + Currency.XAU + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseErrorFromJsonObject(requestId: Int, jsonObject: JSONObject, checkerInfo: CheckerInfo?): String? { + return jsonObject.getString("error") + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.last = jsonObject.getDouble("index") + ticker.timestamp = jsonObject.getLong("updatetime") * TimeUtils.MILLIS_IN_SECOND + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinbase.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinbase.kt new file mode 100644 index 00000000..f87c0c84 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinbase.kt @@ -0,0 +1,70 @@ +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 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.JSONArray +import org.json.JSONObject + +class Coinbase : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Coinbase" + private const val TTS_NAME = NAME + private const val URL = "https://api.gdax.com/products/%1\$s-%2\$s/ticker" + private const val URL_CURRENCY_PAIRS = "https://api.gdax.com/products/" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD, + Currency.EUR, + Currency.GBP + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.last = jsonObject.getDouble("price") + } + + // ==================== + // 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) { + val jsonArray = JSONArray(responseString) + for (i in 0 until jsonArray.length()) { + val pairJsonObject = jsonArray.getJSONObject(i) + pairs.add(CurrencyPairInfo( + pairJsonObject.getString("base_currency"), + pairJsonObject.getString("quote_currency"), + pairJsonObject.getString("id"))) + } + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinnest.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinnest.kt new file mode 100644 index 00000000..527c8bbb --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinnest.kt @@ -0,0 +1,71 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 com.aneonex.bitcoinchecker.datamodule.util.TimeUtils +import org.json.JSONObject + +class Coinnest : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Coinnest" + private const val TTS_NAME = NAME + private const val URL = "https://api.coinnest.co.kr/api/pub/ticker?coin=%1\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.BCC] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.ETC] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.QTUM] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.NEO] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.KNC] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.TSL] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.OMG] = arrayOf( + Currency.KRW + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, + checkerInfo: CheckerInfo) { + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.bid = jsonObject.getDouble("buy") + ticker.ask = jsonObject.getDouble("sell") + ticker.last = jsonObject.getDouble("last") + ticker.vol = jsonObject.getDouble("vol") + ticker.timestamp = jsonObject.getLong("time") * TimeUtils.MILLIS_IN_SECOND + } + + @Throws(Exception::class) + override fun parseErrorFromJsonObject(requestId: Int, jsonObject: JSONObject, + checkerInfo: CheckerInfo?): String? { + return jsonObject.getString("msg") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinome.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinome.kt new file mode 100644 index 00000000..d591c2ab --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinome.kt @@ -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.JSONObject +import java.util.* + +class Coinome : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerJsonObject = jsonObject.getJSONObject(checkerInfo.currencyPairId) + ticker.bid = tickerJsonObject.getDouble("highest_bid") + ticker.ask = tickerJsonObject.getDouble("lowest_ask") + //ticker.vol = tickerJsonObject.getDouble("24hr_volume"); Currently null + ticker.last = tickerJsonObject.getDouble("last") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairArray = jsonObject.names() + for (i in 0 until pairArray.length()) { + val pairId = pairArray.getString(i) + val currencies = pairId.split("-".toRegex()).toTypedArray() + if (currencies.size >= 2) { + pairs.add(CurrencyPairInfo( + currencies[0].toUpperCase(Locale.US), + currencies[1].toUpperCase(Locale.US), + pairId + )) + } + } + } + + companion object { + private const val NAME = "Coinome" + private const val TTS_NAME = "Coin ome" + private const val URL = "https://www.coinome.com/api/v1/ticker.json" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinone.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinone.kt new file mode 100644 index 00000000..80ff2256 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinone.kt @@ -0,0 +1,77 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Coinone : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Coinone" + private const val TTS_NAME = NAME + private const val URL_TICKER = "https://api.coinone.co.kr/ticker?currency=%1\$s" + private const val URL_ORDERS = "https://api.coinone.co.kr/orderbook?currency=%1\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.ETC] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.XRP] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.BCH] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.QTUM] = arrayOf( + Currency.KRW + ) + } + } + + override fun getNumOfRequests(checkerRecord: CheckerInfo?): Int { + return 2 + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return if (requestId == 0) { + String.format(URL_TICKER, checkerInfo.currencyBaseLowerCase) + } else { + String.format(URL_ORDERS, checkerInfo.currencyBaseLowerCase) + } + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, + checkerInfo: CheckerInfo) { + if (requestId == 0) { + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + ticker.timestamp = jsonObject.getLong("timestamp") + } else { + ticker.bid = getFirstPriceFromOrder(jsonObject, "bid") + ticker.ask = getFirstPriceFromOrder(jsonObject, "ask") + } + } + + @Throws(Exception::class) + private fun getFirstPriceFromOrder(jsonObject: JSONObject, key: String): Double { + val array = jsonObject.getJSONArray(key) + if (array.length() == 0) { + return Ticker.NO_DATA.toDouble() + } + val first = array.getJSONObject(0) + return first.getDouble("price") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinse.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinse.kt new file mode 100644 index 00000000..8c42c73b --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinse.kt @@ -0,0 +1,101 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.R +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import org.json.JSONObject + +class Coinse : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Coins-E" + private const val TTS_NAME = NAME + private const val URL = "https://www.coins-e.com/api/v2/markets/data/" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.ALP] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.AMC] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.ANC] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.ARG] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.BET] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.BQC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.BTG] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.CGB] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.CIN] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.CMC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.COL] = arrayOf(VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.CRC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.CSC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.DEM] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.DGC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.DMD] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.DOGE] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.DTC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.ELC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.ELP] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.EMD] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.EZC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.FLO] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.FRK] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.FTC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.GDC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.GLC] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.GLX] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.HYC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.IFC] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC, VirtualCurrency.XPM) + CURRENCY_PAIRS[VirtualCurrency.KGC] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.LBW] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.MEC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.NAN] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.NET] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.NIB] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.NRB] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.NUC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.NVC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.ORB] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.PPC] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.XPM) + CURRENCY_PAIRS[VirtualCurrency.PTS] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.PWC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.PXC] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.QRK] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC, VirtualCurrency.XPM) + CURRENCY_PAIRS[VirtualCurrency.RCH] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.REC] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.RED] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.SBC] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.SPT] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.TAG] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.TRC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.UNO] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.VLC] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.WDC] = arrayOf(VirtualCurrency.BTC) + CURRENCY_PAIRS[VirtualCurrency.XNC] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.XPM] = arrayOf(VirtualCurrency.BTC, VirtualCurrency.LTC) + CURRENCY_PAIRS[VirtualCurrency.ZET] = arrayOf(VirtualCurrency.BTC) + } + } + + override val cautionResId: Int + get() = R.string.market_caution_much_data + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val marketsObject = jsonObject.getJSONObject("markets") + val pairObject = marketsObject.getJSONObject(checkerInfo.currencyBase + "_" + checkerInfo.currencyCounter) + val marketStatObject = pairObject.getJSONObject("marketstat") + val inner24hObject = marketStatObject.getJSONObject("24h") + ticker.bid = marketStatObject.getDouble("bid") + ticker.ask = marketStatObject.getDouble("ask") + ticker.vol = inner24hObject.getDouble("volume") + ticker.high = inner24hObject.getDouble("h") + ticker.low = inner24hObject.getDouble("l") + ticker.last = marketStatObject.getDouble("ltp") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinsph.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinsph.kt new file mode 100644 index 00000000..2771fd4f --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Coinsph.kt @@ -0,0 +1,50 @@ +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 Coinsph : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val marketJsonObject = jsonObject.getJSONObject("market") + ticker.bid = marketJsonObject.getDouble("bid") + ticker.ask = marketJsonObject.getDouble("ask") + ticker.last = ticker.ask + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val marketsJsonArray = jsonObject.getJSONArray("markets") + for (i in 0 until marketsJsonArray.length()) { + val pairJsonObject = marketsJsonArray.getJSONObject(i) + if (pairJsonObject != null) { + pairs.add(CurrencyPairInfo( + pairJsonObject.getString("product"), + pairJsonObject.getString("currency"), + pairJsonObject.getString("symbol") + )) + } + } + } + + companion object { + private const val NAME = "Coins.ph" + private const val TTS_NAME = NAME + private const val URL = "https://quote.coins.ph/v1/markets/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://quote.coins.ph/v1/markets" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Comkort.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Comkort.kt new file mode 100644 index 00000000..5df948fd --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Comkort.kt @@ -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.JSONObject + +class Comkort : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val marketsJsonObject = jsonObject.getJSONObject("markets") + val marketNames = marketsJsonObject.names() + val marketJsonObject = marketsJsonObject.getJSONObject(marketNames.getString(0)) + ticker.bid = getFirstOrderFrom(marketJsonObject, "buy_orders") + ticker.ask = getFirstOrderFrom(marketJsonObject, "sell_orders") + ticker.vol = marketJsonObject.getDouble("volume") + ticker.high = marketJsonObject.getDouble("high") + ticker.low = marketJsonObject.getDouble("low") + ticker.last = marketJsonObject.getDouble("last_price") + } + + @Throws(Exception::class) + private fun getFirstOrderFrom(marketJsonObject: JSONObject, arrayName: String): Double { + val ordersJsonArray = marketJsonObject.getJSONArray(arrayName) + return if (ordersJsonArray.length() > 0) { + ordersJsonArray.getJSONObject(0).getDouble("price") + } else Ticker.NO_DATA.toDouble() + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val marketsJsonArray = jsonObject.getJSONArray("markets") + for (i in 0 until marketsJsonArray.length()) { + val marketJsonObject = marketsJsonArray.getJSONObject(i) + pairs.add(CurrencyPairInfo( + marketJsonObject.getString("item"), + marketJsonObject.getString("price_currency"), + marketJsonObject.getString("alias"))) + } + } + + companion object { + private const val NAME = "Comkort" + private const val TTS_NAME = NAME + private const val URL = "https://api.comkort.com/v1/public/market/summary?market_alias=%1\$s" + private const val URL_CURRENCY_PAIRS = "https://api.comkort.com/v1/public/market/list" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CryptoAltex.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CryptoAltex.kt new file mode 100644 index 00000000..daa77127 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CryptoAltex.kt @@ -0,0 +1,47 @@ +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 CryptoAltex : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val pairObject = jsonObject.getJSONObject(checkerInfo.currencyPairId) + ticker.vol = pairObject.getDouble("24_hours_volume") + ticker.high = pairObject.getDouble("24_hours_price_high") + ticker.low = pairObject.getDouble("24_hours_price_low") + ticker.last = pairObject.getDouble("last_trade") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairsNamesArray = jsonObject.names() + for (i in 0 until pairsNamesArray.length()) { + val pairName = pairsNamesArray.getString(i) + val split = pairName.split("/".toRegex()).toTypedArray() + if (split != null && split.size >= 2) { + pairs.add(CurrencyPairInfo(split[0], split[1], pairName)) + } + } + } + + companion object { + private const val NAME = "CryptoAltex" + private const val TTS_NAME = "Crypto Altex" + private const val URL = "https://www.cryptoaltex.com/api/public_v2.php" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CryptoRush.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CryptoRush.kt new file mode 100644 index 00000000..598bb722 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CryptoRush.kt @@ -0,0 +1,53 @@ +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 com.aneonex.bitcoinchecker.datamodule.R +import org.json.JSONObject + +class CryptoRush : Market(NAME, TTS_NAME, null) { + override val cautionResId: Int + get() = R.string.market_caution_much_data + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val pairJsonObject = jsonObject.getJSONObject(checkerInfo.currencyBase + "/" + checkerInfo.currencyCounter) + ticker.bid = pairJsonObject.getDouble("current_bid") + ticker.ask = pairJsonObject.getDouble("current_ask") + ticker.vol = pairJsonObject.getDouble("volume_base_24h") + ticker.high = pairJsonObject.getDouble("highest_24h") + ticker.low = pairJsonObject.getDouble("lowest_24h") + ticker.last = pairJsonObject.getDouble("last_trade") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairNames = jsonObject.names() + for (i in 0 until pairNames.length()) { + val pairId = pairNames.getString(i) ?: continue + val currencies = pairId.split("/".toRegex()).toTypedArray() + if (currencies.size != 2) continue + pairs.add(CurrencyPairInfo(currencies[0], currencies[1], pairId)) + } + } + + companion object { + const val NAME = "CryptoRush" + const val TTS_NAME = "Crypto Rush" + const val URL = "https://cryptorush.in/marketdata/all.json" + private const val URL_CURRENCY_PAIRS = URL + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CryptoTrade.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CryptoTrade.kt new file mode 100644 index 00000000..ce4fcfc7 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/CryptoTrade.kt @@ -0,0 +1,85 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class CryptoTrade : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Crypto-Trade" + private const val TTS_NAME = "Crypto Trade" + private const val URL = "https://crypto-trade.com/api/1/ticker/%1\$s_%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD, + Currency.EUR + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.NMC] = arrayOf( + Currency.USD, + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.XPM] = arrayOf( + Currency.USD, + VirtualCurrency.BTC, + VirtualCurrency.PPC + ) + CURRENCY_PAIRS[VirtualCurrency.PPC] = arrayOf( + Currency.USD, + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.TRC] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.FTC] = arrayOf( + Currency.USD, + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.DVC] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.WDC] = arrayOf( + Currency.USD, + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.DGC] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.UTC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataObject = jsonObject.getJSONObject("data") + ticker.bid = dataObject.getDouble("max_bid") + ticker.ask = dataObject.getDouble("min_ask") + ticker.vol = dataObject.getDouble("vol_" + checkerInfo.currencyBaseLowerCase) + ticker.high = dataObject.getDouble("high") + ticker.low = dataObject.getDouble("low") + ticker.last = dataObject.getDouble("last") + } + + @Throws(Exception::class) + override fun parseErrorFromJsonObject(requestId: Int, jsonObject: JSONObject, checkerInfo: CheckerInfo?): String? { + return jsonObject.getString("error") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptoine.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptoine.kt new file mode 100644 index 00000000..38af5b60 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptoine.kt @@ -0,0 +1,57 @@ +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 +import java.util.* + +class Cryptoine : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = getDoubleOrZero(jsonObject, "buy") + ticker.ask = getDoubleOrZero(jsonObject, "sell") + ticker.vol = getDoubleOrZero(jsonObject, "vol_exchange") + ticker.high = getDoubleOrZero(jsonObject, "high") + ticker.low = getDoubleOrZero(jsonObject, "low") + ticker.last = getDoubleOrZero(jsonObject, "last") + } + + @Throws(Exception::class) + private fun getDoubleOrZero(jsonObject: JSONObject, name: String): Double { + return if (jsonObject.isNull(name)) 0.0 else jsonObject.getDouble(name) + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val dataJsonObject = jsonObject.getJSONObject("data") + val pairNames = dataJsonObject.names() + for (i in 0 until pairNames.length()) { + val pairId = pairNames.getString(i) ?: continue + val currencies = pairId.split("_".toRegex()).toTypedArray() + if (currencies.size != 2) continue + val currencyBase = currencies[0].toUpperCase(Locale.ENGLISH) + val currencyCounter = currencies[1].toUpperCase(Locale.ENGLISH) + pairs.add(CurrencyPairInfo(currencyBase, currencyCounter, pairId)) + } + } + + companion object { + private const val NAME = "Cryptoine" + private const val TTS_NAME = NAME + private const val URL = "https://cryptoine.com/api/1/ticker/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://cryptoine.com/api/1/markets" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptonit.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptonit.kt new file mode 100644 index 00000000..9a32d957 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptonit.kt @@ -0,0 +1,58 @@ +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 com.aneonex.bitcoinchecker.datamodule.util.ParseUtils +import org.json.JSONArray +import org.json.JSONObject +import java.util.* + +class Cryptonit : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyCounterLowerCase, checkerInfo.currencyBaseLowerCase) // reversed pairs! + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val rateJsonObject = jsonObject.getJSONObject("rate") + val volumeJsonObject = jsonObject.getJSONObject("volume") + ticker.bid = ParseUtils.getDoubleFromString(rateJsonObject, "bid") + ticker.ask = ParseUtils.getDoubleFromString(rateJsonObject, "ask") + if (volumeJsonObject.has(checkerInfo.currencyBase)) { + ticker.vol = ParseUtils.getDoubleFromString(volumeJsonObject, checkerInfo.currencyBase) + } + ticker.high = ParseUtils.getDoubleFromString(rateJsonObject, "high") + ticker.low = ParseUtils.getDoubleFromString(rateJsonObject, "low") + ticker.last = ParseUtils.getDoubleFromString(rateJsonObject, "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) { + val pairsJsonArray = JSONArray(responseString) + var currenciesJsonArray: JSONArray? = null + for (i in 0 until pairsJsonArray.length()) { + currenciesJsonArray = pairsJsonArray.getJSONArray(i) + if (currenciesJsonArray.length() != 2) continue + val currencyBase = currenciesJsonArray.getString(1) // reversed pairs! + val currencyCounter = currenciesJsonArray.getString(0) // reversed pairs! + if (currencyBase == null || currencyCounter == null) continue + pairs.add(CurrencyPairInfo(currencyBase.toUpperCase(Locale.US), currencyCounter.toUpperCase(Locale.US), null)) + } + } + + companion object { + private const val NAME = "Cryptonit" + private const val TTS_NAME = NAME + private const val URL = "https://cryptonit.net/apiv2/rest/public/ccorder.json?bid_currency=%1\$s&ask_currency=%2\$s&ticker" + private const val URL_CURRENCY_PAIRS = "https://cryptonit.net/apiv2/rest/public/pairs.json" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptopia.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptopia.kt new file mode 100644 index 00000000..48513630 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptopia.kt @@ -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.JSONObject + +class Cryptopia : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataJsonObject = jsonObject.getJSONObject("Data") + ticker.bid = dataJsonObject.getDouble("BidPrice") + ticker.ask = dataJsonObject.getDouble("AskPrice") + ticker.vol = dataJsonObject.getDouble("Volume") + ticker.high = dataJsonObject.getDouble("High") + ticker.low = dataJsonObject.getDouble("Low") + ticker.last = dataJsonObject.getDouble("LastPrice") + } + + @Throws(Exception::class) + override fun parseErrorFromJsonObject(requestId: Int, jsonObject: JSONObject, checkerInfo: CheckerInfo?): String? { + return jsonObject.getString("Message") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val dataJsonArray = jsonObject.getJSONArray("Data") + for (i in 0 until dataJsonArray.length()) { + val pairJsonObject = dataJsonArray.getJSONObject(i) + val currencyBase = pairJsonObject.getString("Symbol") + val currencyCounter = pairJsonObject.getString("BaseSymbol") + val pairId = pairJsonObject.getString("Id") + if (currencyCounter != null && currencyCounter != null && pairId != null) { + pairs.add(CurrencyPairInfo( + currencyBase, + currencyCounter, + pairId)) + } + } + } + + companion object { + private const val NAME = "Cryptopia" + private const val TTS_NAME = "Cryptopia" + private const val URL = "https://www.cryptopia.co.nz/api/GetMarket/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://www.cryptopia.co.nz/api/GetTradePairs" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptsy.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptsy.kt new file mode 100644 index 00000000..eda9f9a3 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Cryptsy.kt @@ -0,0 +1,224 @@ +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 +import java.util.* + +class Cryptsy : Market(NAME, TTS_NAME, null) { + companion object { + private const val NAME = "Cryptsy" + private const val TTS_NAME = NAME + private const val URL = "https://cryptsy.com/api/v2/markets/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://cryptsy.com/api/v2/markets" + private val CURRENCY_PAIRS_IDS = HashMap(151) + + init { + // Kept for backward compatibility + CURRENCY_PAIRS_IDS["42_BTC"] = 141 + CURRENCY_PAIRS_IDS["ADT_LTC"] = 94 + CURRENCY_PAIRS_IDS["ADT_XPM"] = 113 + CURRENCY_PAIRS_IDS["ALF_BTC"] = 57 + CURRENCY_PAIRS_IDS["AMC_BTC"] = 43 + CURRENCY_PAIRS_IDS["ANC_BTC"] = 66 + CURRENCY_PAIRS_IDS["ANC_LTC"] = 121 + CURRENCY_PAIRS_IDS["ARG_BTC"] = 48 + CURRENCY_PAIRS_IDS["ASC_LTC"] = 111 + CURRENCY_PAIRS_IDS["ASC_XPM"] = 112 + CURRENCY_PAIRS_IDS["AUR_BTC"] = 160 + CURRENCY_PAIRS_IDS["AUR_LTC"] = 161 + CURRENCY_PAIRS_IDS["BCX_BTC"] = 142 + CURRENCY_PAIRS_IDS["BEN_BTC"] = 157 + CURRENCY_PAIRS_IDS["BET_BTC"] = 129 + CURRENCY_PAIRS_IDS["BQC_BTC"] = 10 + CURRENCY_PAIRS_IDS["BTB_BTC"] = 23 + CURRENCY_PAIRS_IDS["BTE_BTC"] = 49 + CURRENCY_PAIRS_IDS["BTG_BTC"] = 50 + CURRENCY_PAIRS_IDS["BUK_BTC"] = 102 + CURRENCY_PAIRS_IDS["CACH_BTC"] = 154 + CURRENCY_PAIRS_IDS["CAP_BTC"] = 53 + CURRENCY_PAIRS_IDS["CASH_BTC"] = 150 + CURRENCY_PAIRS_IDS["CAT_BTC"] = 136 + CURRENCY_PAIRS_IDS["CGB_BTC"] = 70 + CURRENCY_PAIRS_IDS["CGB_LTC"] = 123 + CURRENCY_PAIRS_IDS["CLR_BTC"] = 95 + CURRENCY_PAIRS_IDS["CMC_BTC"] = 74 + CURRENCY_PAIRS_IDS["CNC_BTC"] = 8 + CURRENCY_PAIRS_IDS["CNC_LTC"] = 17 + CURRENCY_PAIRS_IDS["COL_LTC"] = 109 + CURRENCY_PAIRS_IDS["COL_XPM"] = 110 + CURRENCY_PAIRS_IDS["CPR_LTC"] = 91 + CURRENCY_PAIRS_IDS["CRC_BTC"] = 58 + CURRENCY_PAIRS_IDS["CSC_BTC"] = 68 + CURRENCY_PAIRS_IDS["DBL_LTC"] = 46 + CURRENCY_PAIRS_IDS["DEM_BTC"] = 131 + CURRENCY_PAIRS_IDS["DGB_BTC"] = 167 + CURRENCY_PAIRS_IDS["DGC_BTC"] = 26 + CURRENCY_PAIRS_IDS["DGC_LTC"] = 96 + CURRENCY_PAIRS_IDS["DMD_BTC"] = 72 + CURRENCY_PAIRS_IDS["DOGE_BTC"] = 132 + CURRENCY_PAIRS_IDS["DOGE_LTC"] = 135 + CURRENCY_PAIRS_IDS["DRK_BTC"] = 155 + CURRENCY_PAIRS_IDS["DVC_BTC"] = 40 + CURRENCY_PAIRS_IDS["DVC_LTC"] = 52 + CURRENCY_PAIRS_IDS["DVC_XPM"] = 122 + CURRENCY_PAIRS_IDS["EAC_BTC"] = 139 + CURRENCY_PAIRS_IDS["ELC_BTC"] = 12 + CURRENCY_PAIRS_IDS["ELP_LTC"] = 93 + CURRENCY_PAIRS_IDS["EMD_BTC"] = 69 + CURRENCY_PAIRS_IDS["EZC_BTC"] = 47 + CURRENCY_PAIRS_IDS["EZC_LTC"] = 55 + CURRENCY_PAIRS_IDS["FFC_BTC"] = 138 + CURRENCY_PAIRS_IDS["FLAP_BTC"] = 165 + CURRENCY_PAIRS_IDS["FLO_LTC"] = 61 + CURRENCY_PAIRS_IDS["FRC_BTC"] = 39 + CURRENCY_PAIRS_IDS["FRK_BTC"] = 33 + CURRENCY_PAIRS_IDS["FST_BTC"] = 44 + CURRENCY_PAIRS_IDS["FST_LTC"] = 124 + CURRENCY_PAIRS_IDS["FTC_BTC"] = 5 + CURRENCY_PAIRS_IDS["GDC_BTC"] = 82 + CURRENCY_PAIRS_IDS["GLC_BTC"] = 76 + CURRENCY_PAIRS_IDS["GLD_BTC"] = 30 + CURRENCY_PAIRS_IDS["GLD_LTC"] = 36 + CURRENCY_PAIRS_IDS["GLX_BTC"] = 78 + CURRENCY_PAIRS_IDS["GME_LTC"] = 84 + CURRENCY_PAIRS_IDS["HBN_BTC"] = 80 + CURRENCY_PAIRS_IDS["IFC_BTC"] = 59 + CURRENCY_PAIRS_IDS["IFC_LTC"] = 60 + CURRENCY_PAIRS_IDS["IFC_XPM"] = 105 + CURRENCY_PAIRS_IDS["IXC_BTC"] = 38 + CURRENCY_PAIRS_IDS["JKC_BTC"] = 25 + CURRENCY_PAIRS_IDS["JKC_LTC"] = 35 + CURRENCY_PAIRS_IDS["KGC_BTC"] = 65 + CURRENCY_PAIRS_IDS["LEAF_BTC"] = 148 + CURRENCY_PAIRS_IDS["LK7_BTC"] = 116 + CURRENCY_PAIRS_IDS["LKY_BTC"] = 34 + CURRENCY_PAIRS_IDS["LOT_BTC"] = 137 + CURRENCY_PAIRS_IDS["LTC_BTC"] = 3 + CURRENCY_PAIRS_IDS["MAX_BTC"] = 152 + CURRENCY_PAIRS_IDS["MEC_BTC"] = 45 + CURRENCY_PAIRS_IDS["MEC_LTC"] = 100 + CURRENCY_PAIRS_IDS["MEM_LTC"] = 56 + CURRENCY_PAIRS_IDS["MEOW_BTC"] = 149 + CURRENCY_PAIRS_IDS["MINT_BTC"] = 156 + CURRENCY_PAIRS_IDS["MNC_BTC"] = 7 + CURRENCY_PAIRS_IDS["MOON_LTC"] = 145 + CURRENCY_PAIRS_IDS["MST_LTC"] = 62 + CURRENCY_PAIRS_IDS["MZC_BTC"] = 164 + CURRENCY_PAIRS_IDS["NAN_BTC"] = 64 + CURRENCY_PAIRS_IDS["NBL_BTC"] = 32 + CURRENCY_PAIRS_IDS["NEC_BTC"] = 90 + CURRENCY_PAIRS_IDS["NET_BTC"] = 134 + CURRENCY_PAIRS_IDS["NET_LTC"] = 108 + CURRENCY_PAIRS_IDS["NET_XPM"] = 104 + CURRENCY_PAIRS_IDS["NMC_BTC"] = 29 + CURRENCY_PAIRS_IDS["NRB_BTC"] = 54 + CURRENCY_PAIRS_IDS["NVC_BTC"] = 13 + CURRENCY_PAIRS_IDS["NXT_BTC"] = 159 + CURRENCY_PAIRS_IDS["NXT_LTC"] = 162 + CURRENCY_PAIRS_IDS["ORB_BTC"] = 75 + CURRENCY_PAIRS_IDS["OSC_BTC"] = 144 + CURRENCY_PAIRS_IDS["PHS_BTC"] = 86 + CURRENCY_PAIRS_IDS["POINTS_BTC"] = 120 + CURRENCY_PAIRS_IDS["PPC_BTC"] = 28 + CURRENCY_PAIRS_IDS["PPC_LTC"] = 125 + CURRENCY_PAIRS_IDS["PTS_BTC"] = 119 + CURRENCY_PAIRS_IDS["PXC_BTC"] = 31 + CURRENCY_PAIRS_IDS["PXC_LTC"] = 101 + CURRENCY_PAIRS_IDS["PYC_BTC"] = 92 + CURRENCY_PAIRS_IDS["QRK_BTC"] = 71 + CURRENCY_PAIRS_IDS["QRK_LTC"] = 126 + CURRENCY_PAIRS_IDS["RDD_BTC"] = 169 + CURRENCY_PAIRS_IDS["RED_LTC"] = 87 + CURRENCY_PAIRS_IDS["RPC_BTC"] = 143 + CURRENCY_PAIRS_IDS["RYC_BTC"] = 9 + CURRENCY_PAIRS_IDS["RYC_LTC"] = 37 + CURRENCY_PAIRS_IDS["SAT_BTC"] = 168 + CURRENCY_PAIRS_IDS["SBC_BTC"] = 51 + CURRENCY_PAIRS_IDS["SBC_LTC"] = 128 + CURRENCY_PAIRS_IDS["SMC_BTC"] = 158 + CURRENCY_PAIRS_IDS["SPT_BTC"] = 81 + CURRENCY_PAIRS_IDS["SRC_BTC"] = 88 + CURRENCY_PAIRS_IDS["STR_BTC"] = 83 + CURRENCY_PAIRS_IDS["SXC_BTC"] = 153 + CURRENCY_PAIRS_IDS["SXC_LTC"] = 98 + CURRENCY_PAIRS_IDS["TAG_BTC"] = 117 + CURRENCY_PAIRS_IDS["TAK_BTC"] = 166 + CURRENCY_PAIRS_IDS["TEK_BTC"] = 114 + CURRENCY_PAIRS_IDS["TGC_BTC"] = 130 + CURRENCY_PAIRS_IDS["TIPS_LTC"] = 147 + CURRENCY_PAIRS_IDS["TIX_LTC"] = 107 + CURRENCY_PAIRS_IDS["TIX_XPM"] = 103 + CURRENCY_PAIRS_IDS["TRC_BTC"] = 27 + CURRENCY_PAIRS_IDS["UNO_BTC"] = 133 + CURRENCY_PAIRS_IDS["UTC_BTC"] = 163 + CURRENCY_PAIRS_IDS["VTC_BTC"] = 151 + CURRENCY_PAIRS_IDS["WDC_BTC"] = 14 + CURRENCY_PAIRS_IDS["WDC_LTC"] = 21 + CURRENCY_PAIRS_IDS["XJO_BTC"] = 115 + CURRENCY_PAIRS_IDS["XNC_LTC"] = 67 + CURRENCY_PAIRS_IDS["XPM_BTC"] = 63 + CURRENCY_PAIRS_IDS["XPM_LTC"] = 106 + CURRENCY_PAIRS_IDS["YAC_BTC"] = 11 + CURRENCY_PAIRS_IDS["YAC_LTC"] = 22 + CURRENCY_PAIRS_IDS["YBC_BTC"] = 73 + CURRENCY_PAIRS_IDS["ZCC_BTC"] = 140 + CURRENCY_PAIRS_IDS["ZED_BTC"] = 170 + CURRENCY_PAIRS_IDS["ZET_BTC"] = 85 + CURRENCY_PAIRS_IDS["ZET_LTC"] = 127 + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + if (checkerInfo.currencyPairId == null) { + val pairString = String.format("%1\$s_%2\$s", checkerInfo.currencyBase, checkerInfo.currencyCounter) + if (CURRENCY_PAIRS_IDS.containsKey(pairString)) { + return String.format(URL, CURRENCY_PAIRS_IDS[pairString].toString()) + } + } + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataJsonObject = jsonObject.getJSONObject("data") + val daySummaryObject = dataJsonObject.getJSONObject("24hr") + + // ticker.vol = daySummaryObject.getDouble("volume"); TODO enable later when there will be any documentation of real data to test on + ticker.high = daySummaryObject.getDouble("price_high") + ticker.low = daySummaryObject.getDouble("price_low") + ticker.last = dataJsonObject.getJSONObject("last_trade").getDouble("price") + } + + @Throws(Exception::class) + override fun parseError(requestId: Int, responseString: String, checkerInfo: CheckerInfo): String? { + return if (checkerInfo.currencyPairId == null) { + "Perform sync and re-add this Checker" + } else super.parseError(requestId, responseString, checkerInfo) + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val dataJsonArray = jsonObject.getJSONArray("data") + for (i in 0 until dataJsonArray.length()) { + val marketObject = dataJsonArray.getJSONObject(i) + val currencyPair = marketObject.getString("label") ?: continue + val currencies: Array = currencyPair.split("/".toRegex()).toTypedArray() + if (currencies.size != 2 || currencies[0] == null || currencies[1] == null) continue + pairs.add(CurrencyPairInfo( + currencies[0], + currencies[1], + marketObject.getString("id") + )) + } + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Dashcurex.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Dashcurex.kt new file mode 100644 index 00000000..d7b14a17 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Dashcurex.kt @@ -0,0 +1,47 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Dashcurex : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Dashcurex" + private const val TTS_NAME = NAME + private const val URL = "https://dashcurex.com/api/%1\$s/ticker.json" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.DASH] = arrayOf( + Currency.PLN, + Currency.USD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = parsePrice(jsonObject.getDouble("best_ask")) + ticker.ask = parsePrice(jsonObject.getDouble("best_bid")) + ticker.vol = parseBTC(jsonObject.getDouble("total_volume")) + ticker.high = parsePrice(jsonObject.getDouble("highest_tx_price")) + ticker.low = parsePrice(jsonObject.getDouble("lowest_tx_price")) + ticker.last = parsePrice(jsonObject.getDouble("last_tx_price")) + } + + private fun parsePrice(price: Double): Double { + return price / 10000 + } + + private fun parseBTC(satoshi: Double): Double { + return satoshi / 100000000 + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/DolarBlueNet.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/DolarBlueNet.kt new file mode 100644 index 00000000..e4d8e7de --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/DolarBlueNet.kt @@ -0,0 +1,34 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class DolarBlueNet : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "DolarBlue.net" + private const val TTS_NAME = "Dolar Blue" + private const val URL = "http://dolar.bitplanet.info/api.php" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[Currency.USD] = arrayOf( + Currency.ARS + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.ask = jsonObject.getDouble("venta") + ticker.bid = jsonObject.getDouble("compra") + ticker.last = ticker.ask + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ETHEXIndia.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ETHEXIndia.kt new file mode 100644 index 00000000..25a2c5ec --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ETHEXIndia.kt @@ -0,0 +1,39 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class ETHEXIndia : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "ETHEX India" + private const val TTS_NAME = NAME + private const val URL = "https://api.ethexindia.com/ticker/" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + Currency.INR + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("current_volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last_traded_price") + ticker.timestamp = jsonObject.getLong("last_traded_time") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Exmo.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Exmo.kt new file mode 100644 index 00000000..eb0c04f4 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Exmo.kt @@ -0,0 +1,49 @@ +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 Exmo : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val pairJsonObject = jsonObject.getJSONObject(checkerInfo.currencyBase + "_" + checkerInfo.currencyCounter) + ticker.bid = pairJsonObject.getDouble("buy_price") + ticker.ask = pairJsonObject.getDouble("sell_price") + ticker.vol = pairJsonObject.getDouble("vol") + ticker.high = pairJsonObject.getDouble("high") + ticker.low = pairJsonObject.getDouble("low") + ticker.last = pairJsonObject.getDouble("last_trade") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairIds = jsonObject.names() + for (i in 0 until pairIds.length()) { + val pairId = pairIds.getString(i) ?: continue + val currencies = pairId.split("_".toRegex()).toTypedArray() + if (currencies.size != 2) continue + pairs.add(CurrencyPairInfo(currencies[0], currencies[1], pairId)) + } + } + + companion object { + private const val NAME = "Exmo" + private const val TTS_NAME = NAME + private const val URL = "https://api.exmo.com/v1/ticker/" + private const val URL_CURRENCY_PAIRS = "https://api.exmo.com/v1/pair_settings/" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Fxbtc.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Fxbtc.kt new file mode 100644 index 00000000..44f026ed --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Fxbtc.kt @@ -0,0 +1,43 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Fxbtc : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "FxBtc" + private const val TTS_NAME = NAME + private const val URL = "https://www.fxbtc.com/jport?op=query&type=ticker&symbol=%1\$s_%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.CNY + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.CNY, + VirtualCurrency.BTC + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerObject = jsonObject.getJSONObject("ticker") + ticker.bid = tickerObject.getDouble("bid") + ticker.ask = tickerObject.getDouble("ask") + ticker.vol = tickerObject.getDouble("vol") + ticker.high = tickerObject.getDouble("high") + ticker.low = tickerObject.getDouble("low") + ticker.last = tickerObject.getDouble("last_rate") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/FybSE.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/FybSE.kt new file mode 100644 index 00000000..97752f4f --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/FybSE.kt @@ -0,0 +1,35 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class FybSE : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "FYB-SE" + private const val TTS_NAME = "Fyb SE" + private const val URL = "https://www.fybse.se/api/%1\$s/ticker.json" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.SEK + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.last = ticker.ask + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/FybSG.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/FybSG.kt new file mode 100644 index 00000000..a2bea3d1 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/FybSG.kt @@ -0,0 +1,35 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class FybSG : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "FYB-SG" + private const val TTS_NAME = "Fyb SG" + private const val URL = "https://www.fybsg.com/api/%1\$s/ticker.json" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.SGD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.last = ticker.ask + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/GateCoin.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/GateCoin.kt new file mode 100644 index 00000000..da06c1ae --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/GateCoin.kt @@ -0,0 +1,63 @@ +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 GateCoin : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val pairNames = jsonObject.getJSONArray("tickers") //returned JSON text is an ARRAY of JSONObjects + val userCurrencyPairChoice = checkerInfo.currencyBase + checkerInfo.currencyCounter + //each JSONObject in the Array has a currency pair and its corresponding ticker details + for (i in 0 until pairNames.length()) { + val tickerDetails = pairNames.getJSONObject(i) + val currentPairId = tickerDetails.getString("currencyPair") + if (currentPairId == userCurrencyPairChoice) { + ticker.bid = tickerDetails.getDouble("bid") + ticker.ask = tickerDetails.getDouble("ask") + ticker.vol = tickerDetails.getDouble("volume") + ticker.high = tickerDetails.getDouble("high") + ticker.low = tickerDetails.getDouble("low") + ticker.last = tickerDetails.getDouble("last") + ticker.timestamp = tickerDetails.getLong("createDateTime") + break + } + } + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairNames = jsonObject.getJSONArray("tickers") //returned JSON text is an ARRAY of JSONObjects + for (i in 0 until pairNames.length()) { + //each JSONObject in the Array has a currency pair and its corresponding ticker details + val pairId = pairNames.getJSONObject(i).getString("currencyPair") ?: continue + //split by index - use char positions (start, end+1) as index + val baseCurrency = pairId.substring(0, 3) //base currency + val counterCurrency = pairId.substring(3, 6) //counter currency + + if(baseCurrency.isEmpty() || counterCurrency.isEmpty()) continue + + pairs.add(CurrencyPairInfo(baseCurrency, counterCurrency, pairId)) + } + } + + companion object { + private const val NAME = "GateCoin" + private const val TTS_NAME = "Gate Coin" + private const val URL = "https://api.gatecoin.com/Public/LiveTickers" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Gemini.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Gemini.kt new file mode 100644 index 00000000..5756468e --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Gemini.kt @@ -0,0 +1,59 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Gemini : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Gemini" + private const val TTS_NAME = "Gemini" + private const val URL = "https://api.gemini.com/v1/book/%1\$s%2\$s?limit_asks=1&limit_bids=1" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + // Gemini allows dynamic symbol retrieval but returns it in format: [ "btcusd" ] + // This doesn't provide an easy way to programmatically split the currency + // So just define them + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + VirtualCurrency.BTC, + Currency.USD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + //Gemini isn't a traditional tracker, rather it seems to return the X last bids and asks + //We could do something like take the average of the last Y prices + //But I will just take the average of the last bid and asking price + val bidsArray = jsonObject.getJSONArray("bids") + if (bidsArray != null && bidsArray.length() > 0) { + ticker.bid = bidsArray.getJSONObject(0).getDouble("price") + } + val asksArray = jsonObject.getJSONArray("asks") + if (asksArray != null && asksArray.length() > 0) { + ticker.ask = asksArray.getJSONObject(0).getDouble("price") + } + if (ticker.bid != Ticker.NO_DATA.toDouble() && ticker.ask != Ticker.NO_DATA.toDouble()) { + ticker.last = (ticker.bid + ticker.ask) / 2.0 + } else if (ticker.bid != Ticker.NO_DATA.toDouble()) { + ticker.last = ticker.bid + } else if (ticker.ask != Ticker.NO_DATA.toDouble()) { + ticker.last = ticker.ask + } else { + ticker.last = 0.0 + } + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/HitBtc.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/HitBtc.kt new file mode 100644 index 00000000..ca446827 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/HitBtc.kt @@ -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 com.aneonex.bitcoinchecker.datamodule.util.ParseUtils +import org.json.JSONObject + +class HitBtc : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + 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") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val symbolsJsonArray = jsonObject.getJSONArray("symbols") + for (i in 0 until symbolsJsonArray.length()) { + val pairJsonObject = symbolsJsonArray.getJSONObject(i) + val currencyBase = pairJsonObject.getString("commodity") + val currencyCounter = pairJsonObject.getString("currency") + val currencyPairId = pairJsonObject.getString("symbol") + if (currencyBase == null || currencyCounter == null || currencyPairId == null) continue + pairs.add(CurrencyPairInfo(currencyBase, currencyCounter, currencyPairId)) + } + } + + companion object { + private const val NAME = "HitBTC" + private const val TTS_NAME = "Hit BTC" + private const val URL = "https://api.hitbtc.com/api/1/public/%1\$s/ticker" + private const val URL_CURRENCY_PAIRS = "https://api.hitbtc.com/api/1/public/symbols" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Huobi.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Huobi.kt new file mode 100644 index 00000000..d8b6c175 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Huobi.kt @@ -0,0 +1,50 @@ +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 +import java.util.* + +class Huobi : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerJsonObject = jsonObject.getJSONObject("tick") + ticker.bid = tickerJsonObject.getJSONArray("bid").getDouble(0) + ticker.ask = tickerJsonObject.getJSONArray("ask").getDouble(0) + ticker.vol = tickerJsonObject.getDouble("vol") + ticker.high = tickerJsonObject.getDouble("high") + ticker.low = tickerJsonObject.getDouble("low") + ticker.last = tickerJsonObject.getDouble("close") + } + + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + if ("ok".equals(jsonObject.getString("status"), ignoreCase = true)) { + val data = jsonObject.getJSONArray("data") + for (i in 0 until data.length()) { + val base = data.getJSONObject(i).getString("base-currency").toUpperCase(Locale.US) + val counter = data.getJSONObject(i).getString("quote-currency").toUpperCase(Locale.US) + pairs.add(CurrencyPairInfo(base, counter, null)) + } + } else { + throw Exception("Parse currency pairs error.") + } + } + + companion object { + private const val NAME = "Huobi" + private const val TTS_NAME = NAME + private const val URL = "https://api.huobi.pro/market/detail/merged?symbol=%s%s" + private const val URL_CURRENCY_PAIRS = "https://api.huobi.pro/v1/common/symbols" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Igot.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Igot.kt new file mode 100644 index 00000000..600f99a6 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Igot.kt @@ -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 com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import org.json.JSONObject +import java.util.* + +class Igot : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val pairJsonObject = jsonObject.getJSONObject(checkerInfo.currencyPairId) + ticker.high = pairJsonObject.getDouble("highest_today") + ticker.low = pairJsonObject.getDouble("lowest_today") + ticker.last = pairJsonObject.getDouble("current_rate") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairsJsonArray = jsonObject.names() + for (i in 0 until pairsJsonArray.length()) { + val currencyCounter = pairsJsonArray.getString(i) + if (currencyCounter != null) { + pairs.add(CurrencyPairInfo( + VirtualCurrency.BTC, + currencyCounter.toUpperCase(Locale.ENGLISH), + currencyCounter)) + } + } + } + + companion object { + private const val NAME = "igot" + private const val TTS_NAME = "igot" + private const val URL = "https://www.igot.com/api/v1/stats/buy" + private const val URL_CURRENCY_PAIRS = URL + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ItBit.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ItBit.kt new file mode 100644 index 00000000..5b0f1948 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ItBit.kt @@ -0,0 +1,49 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class ItBit : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "itBit" + private const val TTS_NAME = "It Bit" + private const val URL = "https://api.itbit.com/v1/markets/%1\$s%2\$s/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD, + Currency.SGD, + Currency.EUR + ) + } + } + + private fun fixCurrency(currency: String?): String? { + return if (VirtualCurrency.BTC == currency) VirtualCurrency.XBT else currency + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, fixCurrency(checkerInfo.currencyBase), checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume24h") + ticker.high = jsonObject.getDouble("high24h") + ticker.low = jsonObject.getDouble("low24h") + ticker.last = jsonObject.getDouble("lastPrice") + } + + @Throws(Exception::class) + override fun parseErrorFromJsonObject(requestId: Int, jsonObject: JSONObject, checkerInfo: CheckerInfo?): String? { + return jsonObject.getString("message") // not working? + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Justcoin.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Justcoin.kt new file mode 100644 index 00000000..40f0bc13 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Justcoin.kt @@ -0,0 +1,66 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Justcoin : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Justcoin" + private const val TTS_NAME = "Just coin" + private const val URL = "https://justcoin.com/api/2/%1\$s%2\$s/money/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD, + Currency.EUR, + Currency.GBP, + Currency.HKD, + Currency.CHF, + Currency.AUD, + Currency.CAD, + Currency.NZD, + Currency.SGD, + Currency.JPY + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.DOGE] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.STR] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.XRP] = arrayOf( + VirtualCurrency.BTC + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataObject = jsonObject.getJSONObject("data") + ticker.bid = getPriceValueFromObject(dataObject, "buy") + ticker.ask = getPriceValueFromObject(dataObject, "sell") + ticker.vol = getPriceValueFromObject(dataObject, "vol") + ticker.high = getPriceValueFromObject(dataObject, "high") + ticker.low = getPriceValueFromObject(dataObject, "low") + ticker.last = getPriceValueFromObject(dataObject, "last") + } + + @Throws(Exception::class) + private fun getPriceValueFromObject(jsonObject: JSONObject, key: String): Double { + val innerObject = jsonObject.getJSONObject(key) + return innerObject.getDouble("value") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Koinex.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Koinex.kt new file mode 100644 index 00000000..811bd101 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Koinex.kt @@ -0,0 +1,49 @@ +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 com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import org.json.JSONObject + +class Koinex : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val names = jsonObject.getJSONObject("stats") + val tickerJsonObject = names.getJSONObject(checkerInfo.currencyBase) + ticker.bid = tickerJsonObject.getDouble("highest_bid") + ticker.ask = tickerJsonObject.getDouble("lowest_ask") + ticker.vol = tickerJsonObject.getDouble("vol_24hrs") + ticker.high = tickerJsonObject.getDouble("max_24hrs") + ticker.low = tickerJsonObject.getDouble("min_24hrs") + ticker.last = tickerJsonObject.getDouble("last_traded_price") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val currencyJSONObject = jsonObject.getJSONObject("stats") + val currencyArray = currencyJSONObject.names() + for (i in 0 until currencyArray.length()) { + pairs.add(CurrencyPairInfo(currencyArray.getString(i), Currency.INR, null)) + } + } + + companion object { + private const val NAME = "Koinex" + private const val TTS_NAME = "Koin ex" + private const val URL = "https://koinex.in/api/ticker" + private const val URL_CURRENCY_PAIRS = URL + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Koinim.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Koinim.kt new file mode 100644 index 00000000..a51c3c08 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Koinim.kt @@ -0,0 +1,44 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Koinim : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + const val NAME = "Koinim" + const val TTS_NAME = NAME + const val URL_BTC = "https://koinim.com/ticker/" + const val URL_LTC = "https://koinim.com/ticker/ltc/" + val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.TRY + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.TRY + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return if (VirtualCurrency.LTC == checkerInfo.currencyBase) { + URL_LTC + } else URL_BTC + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("buy") + ticker.ask = jsonObject.getDouble("sell") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last_order") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Korbit.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Korbit.kt new file mode 100644 index 00000000..69953e42 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Korbit.kt @@ -0,0 +1,49 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Korbit : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Korbit" + private const val TTS_NAME = NAME + private const val URL = "https://api.korbit.co.kr/v1/ticker/detailed?currency_pair=%1\$s_%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.ETC] = arrayOf( + Currency.KRW + ) + CURRENCY_PAIRS[VirtualCurrency.XRP] = arrayOf( + Currency.KRW + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, + checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + ticker.timestamp = jsonObject.getLong("timestamp") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Kraken.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Kraken.kt new file mode 100644 index 00000000..8b18baf4 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Kraken.kt @@ -0,0 +1,87 @@ +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 com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import org.json.JSONObject + +class Kraken : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return if (checkerInfo.currencyPairId != null) { + String.format(URL, checkerInfo.currencyPairId) + } else { + val currencyBase = fixCurrency(checkerInfo.currencyBase) + val currencyCounter = fixCurrency(checkerInfo.currencyCounter) + String.format(URL, currencyBase + currencyCounter) + } + } + + private fun fixCurrency(currency: String?): String? { + if (VirtualCurrency.BTC == currency) return VirtualCurrency.XBT + if (VirtualCurrency.VEN == currency) return VirtualCurrency.XVN + return if (VirtualCurrency.DOGE == currency) VirtualCurrency.XDG else currency + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val resultObject = jsonObject.getJSONObject("result") + val pairObject = resultObject.getJSONObject(resultObject.names().getString(0)) + ticker.bid = getDoubleFromJsonArrayObject(pairObject, "b") + ticker.ask = getDoubleFromJsonArrayObject(pairObject, "a") + ticker.vol = getDoubleFromJsonArrayObject(pairObject, "v") + ticker.high = getDoubleFromJsonArrayObject(pairObject, "h") + ticker.low = getDoubleFromJsonArrayObject(pairObject, "l") + ticker.last = getDoubleFromJsonArrayObject(pairObject, "c") + } + + @Throws(Exception::class) + private fun getDoubleFromJsonArrayObject(jsonObject: JSONObject, arrayKey: String): Double { + val jsonArray = jsonObject.getJSONArray(arrayKey) + return if (jsonArray != null && jsonArray.length() > 0) jsonArray.getDouble(0) else 0.0 + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val result = jsonObject.getJSONObject("result") + val pairNames = result.names() + for (i in 0 until pairNames.length()) { + val pairId = pairNames.getString(i) + if (pairId != null && pairId.indexOf('.') == -1) { + val pairJsonObject = result.getJSONObject(pairId) + pairs.add(CurrencyPairInfo( + parseCurrency(pairJsonObject.getString("base")), + parseCurrency(pairJsonObject.getString("quote")), + pairId)) + } + } + } + + private fun parseCurrency(currency: String): String { + var currency = currency + if (currency != null && currency.length >= 2) { + val firstChar = currency[0] + if (firstChar == 'Z' || firstChar == 'X') { + currency = currency.substring(1) + } + } + if (VirtualCurrency.XBT == currency) return VirtualCurrency.BTC + if (VirtualCurrency.XVN == currency) return VirtualCurrency.VEN + return if (VirtualCurrency.XDG == currency) VirtualCurrency.DOGE else currency + } + + companion object { + private const val NAME = "Kraken" + private const val TTS_NAME = NAME + private const val URL = "https://api.kraken.com/0/public/Ticker?pair=%1\$s" + private const val URL_CURRENCY_PAIRS = "https://api.kraken.com/0/public/AssetPairs" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Kucoin.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Kucoin.kt new file mode 100644 index 00000000..ff1aa9c1 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Kucoin.kt @@ -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.JSONObject + +class Kucoin : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerJsonObject = jsonObject.getJSONObject("data") + ticker.bid = tickerJsonObject.getDouble("buy") + ticker.ask = tickerJsonObject.getDouble("sell") + ticker.vol = tickerJsonObject.getDouble("vol") + ticker.high = tickerJsonObject.getDouble("high") + ticker.low = tickerJsonObject.getDouble("low") + ticker.last = tickerJsonObject.getDouble("last") + ticker.timestamp = tickerJsonObject.getLong("time") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_COINS_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val data = jsonObject.getJSONArray("data") + for (i in 0 until data.length()) { + val pairJsonObject = data.getJSONObject(i) + pairs.add(CurrencyPairInfo( + pairJsonObject.getString("baseCurrency"), + pairJsonObject.getString("quoteCurrency"), + pairJsonObject.getString("symbol") + )) + } + } + + companion object { + private const val NAME = "Kucoin" + private const val TTS_NAME = NAME + private const val URL = "https://api.kucoin.com/api/v1/market/stats?symbol=%1\$s" + private const val URL_COINS_PAIRS = "https://api.kucoin.com/api/v1/symbols" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/LakeBTC.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/LakeBTC.kt new file mode 100644 index 00000000..4e09b7c6 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/LakeBTC.kt @@ -0,0 +1,53 @@ +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 +import java.util.* + +class LakeBTC : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val pairId: String? + pairId = checkerInfo.currencyPairId + ?: checkerInfo.currencyBaseLowerCase + checkerInfo.currencyCounterLowerCase + val pairJsonObject = jsonObject.getJSONObject(pairId) + ticker.bid = pairJsonObject.getDouble("bid") + ticker.ask = pairJsonObject.getDouble("ask") + ticker.vol = pairJsonObject.getDouble("volume") + ticker.high = pairJsonObject.getDouble("high") + ticker.low = pairJsonObject.getDouble("low") + ticker.last = pairJsonObject.getDouble("last") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairsJsonArray = jsonObject.names() + for (i in 0 until pairsJsonArray.length()) { + val pairId = pairsJsonArray.getString(i) + val currencyBase = pairId.substring(0, 3).toUpperCase(Locale.ENGLISH) + val currencyCounter = pairId.substring(3).toUpperCase(Locale.ENGLISH) + pairs.add(CurrencyPairInfo(currencyBase, currencyCounter, pairId)) + } + } + + companion object { + private const val NAME = "LakeBTC" + private const val TTS_NAME = "Lake BTC" + private const val URL = "https://api.lakebtc.com/api_v2/ticker" + private const val URL_CURRENCY_PAIRS = URL + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Liqui.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Liqui.kt new file mode 100644 index 00000000..3c732eef --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Liqui.kt @@ -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.JSONObject +import java.util.* + +class Liqui : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + var pairId = checkerInfo.currencyPairId + if (checkerInfo.currencyPairId == null) { + pairId = String.format("%1\$s_%2\$s", checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + return String.format(URL, pairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val names = jsonObject.names() + val tickerJsonObject = jsonObject.getJSONObject(names.getString(0)) + ticker.bid = tickerJsonObject.getDouble("sell") // REVERSED! + ticker.ask = tickerJsonObject.getDouble("buy") // REVERSED! + ticker.vol = tickerJsonObject.getDouble("vol") + ticker.high = tickerJsonObject.getDouble("high") + ticker.low = tickerJsonObject.getDouble("low") + ticker.last = tickerJsonObject.getDouble("last") + ticker.timestamp = tickerJsonObject.getLong("updated") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairsJsonObject = jsonObject.getJSONObject("pairs") + val pairsNames = pairsJsonObject.names() + for (i in 0 until pairsNames.length()) { + val pairId = pairsNames.getString(i) ?: continue + val currencies = pairId.split("_".toRegex()).toTypedArray() + if (currencies.size != 2) continue + val currencyBase = currencies[0].toUpperCase(Locale.ENGLISH) + val currencyCounter = currencies[1].toUpperCase(Locale.ENGLISH) + pairs.add(CurrencyPairInfo(currencyBase, currencyCounter, pairId)) + } + } + + companion object { + //Liqui's API is similar to BTC-e, so use BTCe.java for any help with updating this code + private const val NAME = "Liqui.io" + private const val TTS_NAME = "Liqui" + private const val URL = " https://api.liqui.io/api/3/ticker/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://api.liqui.io/api/3/info" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Livecoin.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Livecoin.kt new file mode 100644 index 00000000..cfc3dad4 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Livecoin.kt @@ -0,0 +1,61 @@ +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 Livecoin : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + if (!jsonObject.isNull("best_bid")) { + ticker.bid = jsonObject.getDouble("best_bid") + } + if (!jsonObject.isNull("best_ask")) { + ticker.ask = jsonObject.getDouble("best_ask") + } + if (!jsonObject.isNull("volume")) { + ticker.vol = jsonObject.getDouble("volume") + } + if (!jsonObject.isNull("high")) { + ticker.high = jsonObject.getDouble("high") + } + if (!jsonObject.isNull("low")) { + ticker.low = jsonObject.getDouble("low") + } + ticker.last = jsonObject.getDouble("last") + } + + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairs(requestId: Int, responseString: String, pairs: MutableList) { + val tickerArray = JSONArray(responseString) + for (i in 0 until tickerArray.length()) { + val tickerRow = tickerArray.getJSONObject(i) + val symbol = tickerRow.getString("symbol") + val currencyNames = symbol.split("/".toRegex()).toTypedArray() + if (currencyNames != null && currencyNames.size >= 2) { + pairs.add(CurrencyPairInfo( + currencyNames[0], + currencyNames[1], + symbol)) + } + } + } + + companion object { + private const val NAME = "Livecoin" + private const val TTS_NAME = "Live coin" + private const val URL = "https://api.livecoin.net/exchange/ticker?currencyPair=%1\$s" + private const val URL_CURRENCY_PAIRS = "https://api.livecoin.net/exchange/ticker" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/LocalBitcoins.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/LocalBitcoins.kt new file mode 100644 index 00000000..7e91fc4b --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/LocalBitcoins.kt @@ -0,0 +1,50 @@ +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 com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import org.json.JSONObject + +class LocalBitcoins : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val pairJsonObject = jsonObject.getJSONObject(checkerInfo.currencyPairId) + ticker.vol = pairJsonObject.getDouble("volume_btc") + val ratesJsonObject = pairJsonObject.getJSONObject("rates") + ticker.last = ratesJsonObject.getDouble("last") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairsJsonArray = jsonObject.names() + for (i in 0 until pairsJsonArray.length()) { + val currencyCounter = pairsJsonArray.getString(i) + if (currencyCounter != null) { + pairs.add(CurrencyPairInfo( + VirtualCurrency.BTC, + currencyCounter, + currencyCounter)) + } + } + } + + companion object { + private const val NAME = "LocalBitcoins" + private const val TTS_NAME = "Local Bitcoins" + private const val URL = "https://localbitcoins.com/bitcoinaverage/ticker-all-currencies/" + private const val URL_CURRENCY_PAIRS = URL + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Lykke.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Lykke.kt new file mode 100644 index 00000000..19481ccf --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Lykke.kt @@ -0,0 +1,48 @@ +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 Lykke : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume24H") + ticker.last = jsonObject.getDouble("lastPrice") + } + + // ==================== + // 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) { + val jsonArray = JSONArray(responseString) + for (i in 0 until jsonArray.length()) { + val pairJsonObject = jsonArray.getJSONObject(i) + pairs.add(CurrencyPairInfo( + pairJsonObject.getString("baseAssetId"), + pairJsonObject.getString("quotingAssetId"), + pairJsonObject.getString("id"))) + } + } + + companion object { + private const val NAME = "Lykke" + private const val TTS_NAME = NAME + private const val URL = "https://public-api.lykke.com/api/Market/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://public-api.lykke.com/api/AssetPairs/dictionary" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/McxNOW.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/McxNOW.kt new file mode 100644 index 00000000..1b02bd04 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/McxNOW.kt @@ -0,0 +1,85 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import android.text.TextUtils +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 com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.util.XmlParserUtils +import org.w3c.dom.Document +import org.w3c.dom.Element +import org.xml.sax.InputSource +import java.io.StringReader +import javax.xml.parsers.DocumentBuilderFactory + +class McxNOW : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase) + } + + @Throws(Exception::class) + override fun parseTicker(requestId: Int, responseString: String, ticker: Ticker, checkerInfo: CheckerInfo) { + val db = DocumentBuilderFactory.newInstance().newDocumentBuilder() + val `is` = InputSource() + `is`.characterStream = StringReader(responseString) + val doc = db.parse(`is`) + ticker.bid = getFirstPriceFromOrder(doc, "buy") + ticker.ask = getFirstPriceFromOrder(doc, "sell") + ticker.vol = XmlParserUtils.getDoubleNodeValue(XmlParserUtils.getFirstElementByTagName(doc, "curvol")) + ticker.high = XmlParserUtils.getDoubleNodeValue(XmlParserUtils.getFirstElementByTagName(doc, "priceh")) + ticker.low = XmlParserUtils.getDoubleNodeValue(XmlParserUtils.getFirstElementByTagName(doc, "pricel")) + ticker.last = XmlParserUtils.getDoubleNodeValue(XmlParserUtils.getFirstElementByTagName(doc, "lprice")) + } + + @Throws(Exception::class) + private fun getFirstPriceFromOrder(doc: Document, arrayName: String): Double { + val arrayNode = XmlParserUtils.getFirstElementByTagName(doc, arrayName) + if (arrayNode != null) { + val orderNodes = (arrayNode as Element).getElementsByTagName("o") + if (orderNodes != null && orderNodes.length > 1) { + val orderNode = orderNodes.item(1) + if (orderNode != null && orderNode is Element) { + val priceNodes = orderNode.getElementsByTagName("p") + if (priceNodes != null && priceNodes.length > 0) { + return XmlParserUtils.getDoubleNodeValue(priceNodes.item(0)) + } + } + } + } + return Ticker.NO_DATA.toDouble() + } + + // ==================== + // 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) { + val db = DocumentBuilderFactory.newInstance().newDocumentBuilder() + val `is` = InputSource() + `is`.characterStream = StringReader(responseString) + val doc = db.parse(`is`) + val nodes = doc.getElementsByTagName("cur") + var node: Element? = null + if (nodes != null) { + for (i in 0 until nodes.length) { + node = nodes.item(i) as Element + if (node != null) { + val currency = node.getAttribute("tla") + if (!TextUtils.isEmpty(currency) && VirtualCurrency.BTC != currency) pairs.add(CurrencyPairInfo(currency, VirtualCurrency.BTC, null)) + } + } + } + } + + companion object { + private const val NAME = "McxNOW" + private const val TTS_NAME = "MCX now" + private const val URL = "https://mcxnow.com/orders?cur=%1\$s" + private const val URL_CURRENCY_PAIRS = "https://mcxnow.com/current" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Mercado.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Mercado.kt new file mode 100644 index 00000000..952d67a2 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Mercado.kt @@ -0,0 +1,47 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 com.aneonex.bitcoinchecker.datamodule.util.TimeUtils +import org.json.JSONObject + +class Mercado : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Mercado Bitcoin" + private const val TTS_NAME = "Mercado" + private const val URL = "https://www.mercadobitcoin.com.br/api/%1\$s/ticker/" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.BRL + ) + CURRENCY_PAIRS[VirtualCurrency.BCH] = arrayOf( + Currency.BRL + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.BRL + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerJsonObject = jsonObject.getJSONObject("ticker") + ticker.bid = tickerJsonObject.getDouble("buy") + ticker.ask = tickerJsonObject.getDouble("sell") + ticker.vol = tickerJsonObject.getDouble("vol") + ticker.high = tickerJsonObject.getDouble("high") + ticker.low = tickerJsonObject.getDouble("low") + ticker.last = tickerJsonObject.getDouble("last") + ticker.timestamp = tickerJsonObject.getLong("date") * TimeUtils.MILLIS_IN_SECOND + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Mexbt.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Mexbt.kt new file mode 100644 index 00000000..908b1daf --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Mexbt.kt @@ -0,0 +1,38 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Mexbt : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "meXBT" + private const val TTS_NAME = "me XBT" + private const val URL = "https://data.mexbt.com/ticker/%1\$s%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + VirtualCurrency.MXN, + Currency.USD) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume24Hour") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/MintPal.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/MintPal.kt new file mode 100644 index 00000000..dbf66f13 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/MintPal.kt @@ -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 +import org.json.JSONObject + +class MintPal : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTicker(requestId: Int, responseString: String, ticker: Ticker, checkerInfo: CheckerInfo) { + parseTickerFromJsonObject(requestId, JSONArray(responseString).getJSONObject(0), ticker, checkerInfo) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.vol = jsonObject.getDouble("24hvol") + ticker.high = jsonObject.getDouble("24hhigh") + ticker.low = jsonObject.getDouble("24hlow") + ticker.last = jsonObject.getDouble("last_price") + } + + // ==================== + // 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) { + val jsonArray = JSONArray(responseString) + for (i in 0 until jsonArray.length()) { + val marketObject = jsonArray.getJSONObject(i) + pairs.add(CurrencyPairInfo( + marketObject.getString("code"), + marketObject.getString("exchange"), + null + )) + } + } + + companion object { + private const val NAME = "MintPal" + private const val TTS_NAME = "Mint Pal" + private const val URL = "https://api.mintpal.com/market/stats/%1\$s/%2\$s/" + private const val URL_CURRENCY_PAIRS = "https://api.mintpal.com/market/summary/" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/NegocieCoins.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/NegocieCoins.kt new file mode 100644 index 00000000..09574289 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/NegocieCoins.kt @@ -0,0 +1,41 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class NegocieCoins : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "NegocieCoins" + private const val TTS_NAME = "Negocie Coins" + private const val URL = "https://broker.negociecoins.com.br/api/v3/%1\$s%2\$s/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.BRL + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.BRL + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("buy") + ticker.ask = jsonObject.getDouble("sell") + ticker.vol = jsonObject.getDouble("vol") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Nocks.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Nocks.kt new file mode 100644 index 00000000..0b0bc58a --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Nocks.kt @@ -0,0 +1,59 @@ +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 Nocks : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataObject = jsonObject.getJSONObject("data") + ticker.bid = getDoubleFromJsonObject(dataObject, "buy") + ticker.ask = getDoubleFromJsonObject(dataObject, "sell") + ticker.vol = getDoubleFromJsonObject(dataObject, "volume") + ticker.high = getDoubleFromJsonObject(dataObject, "high") + ticker.low = getDoubleFromJsonObject(dataObject, "low") + ticker.last = getDoubleFromJsonObject(dataObject, "last") + } + + @Throws(Exception::class) + private fun getDoubleFromJsonObject(jsonObject: JSONObject, key: String): Double { + return jsonObject.getJSONObject(key).getDouble("amount") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val resultJsonArray = jsonObject.getJSONArray("data") + for (i in 0 until resultJsonArray.length()) { + val marketJsonObject = resultJsonArray.getJSONObject(i) + val pairId = marketJsonObject.getString("code") + val currencies = pairId.split("-".toRegex()).toTypedArray() + if (currencies.size >= 2) { + pairs.add(CurrencyPairInfo( + currencies[0], + currencies[1], + pairId)) + } + } + } + + companion object { + private const val NAME = "Nocks" + private const val TTS_NAME = NAME + private const val URL = "https://api.nocks.com/api/v2/trade-market/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://api.nocks.com/api/v2/trade-market" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/OKCoinFutures.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/OKCoinFutures.kt new file mode 100644 index 00000000..281daff0 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/OKCoinFutures.kt @@ -0,0 +1,57 @@ +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 + +class OKCoinFutures : FuturesMarket(NAME, TTS_NAME, CURRENCY_PAIRS, CONTRACT_TYPES) { + companion object { + private const val NAME = "OKCoin Futures" + private const val TTS_NAME = "OK Coin Futures" + private const val URL = "https://www.okex.com/api/v1/future_ticker.do?symbol=%1\$s_%2\$s&contract_type=%3\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + private val CONTRACT_TYPES = intArrayOf( + Futures.CONTRACT_TYPE_WEEKLY, + Futures.CONTRACT_TYPE_BIWEEKLY, + Futures.CONTRACT_TYPE_QUARTERLY + ) + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( // Currency.CNY, //At this time (2015-09-17) no API exist for www.okcoin.cn. Check https://www.okcoin.cn/about/rest_api.do + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( // Currency.CNY, //At this time (2015-09-17) no API exist for www.okcoin.cn. Check https://www.okcoin.cn/about/rest_api.do + Currency.USD + ) + } + } + + public override fun getUrl(requestId: Int, checkerInfo: CheckerInfo, contractType: Int): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase, getContractTypeString(contractType)) + } + + private fun getContractTypeString(contractType: Int): String { + return when (contractType) { + Futures.CONTRACT_TYPE_WEEKLY -> "this_week" + Futures.CONTRACT_TYPE_BIWEEKLY -> "next_week" + Futures.CONTRACT_TYPE_QUARTERLY -> "quarter" + else -> "this_week" + } + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerJsonObject = jsonObject.getJSONObject("ticker") + ticker.bid = tickerJsonObject.getDouble("buy") + ticker.ask = tickerJsonObject.getDouble("sell") + ticker.vol = tickerJsonObject.getDouble("vol") + ticker.high = tickerJsonObject.getDouble("high") + ticker.low = tickerJsonObject.getDouble("low") + ticker.last = tickerJsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Okcoin.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Okcoin.kt new file mode 100644 index 00000000..a1b3fb7d --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Okcoin.kt @@ -0,0 +1,49 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Okcoin : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "OKCoin" + private const val TTS_NAME = "OK Coin" + private const val URL_USD = "https://www.okcoin.com/api/v1/ticker.do?symbol=%1\$s_%2\$s" + private const val URL_CNY = "https://www.okcoin.cn/api/v1/ticker.do?symbol=%1\$s_%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.CNY, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.CNY, + Currency.USD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return if (Currency.USD == checkerInfo.currencyCounter) { + String.format(URL_USD, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } else { + String.format(URL_CNY, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerJsonObject = jsonObject.getJSONObject("ticker") + ticker.bid = tickerJsonObject.getDouble("buy") + ticker.ask = tickerJsonObject.getDouble("sell") + ticker.vol = tickerJsonObject.getDouble("vol") + ticker.high = tickerJsonObject.getDouble("high") + ticker.low = tickerJsonObject.getDouble("low") + ticker.last = tickerJsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/OmniTrade.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/OmniTrade.kt new file mode 100644 index 00000000..807abe46 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/OmniTrade.kt @@ -0,0 +1,50 @@ +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 OmniTrade : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataJsonObject = jsonObject.getJSONObject("ticker") + ticker.bid = dataJsonObject.getDouble("buy") + ticker.ask = dataJsonObject.getDouble("sell") + ticker.low = dataJsonObject.getDouble("low") + ticker.high = dataJsonObject.getDouble("high") + ticker.last = dataJsonObject.getDouble("last") + ticker.vol = dataJsonObject.getDouble("vol") + } + + // ==================== + // 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) { + val pairsArray = JSONArray(responseString) + for (i in 0 until pairsArray.length()) { + val pair = pairsArray.getJSONObject(i) + val currencies = pair.getString("name").split("/".toRegex()).toTypedArray() + if (currencies.size != 2) continue + pairs.add(CurrencyPairInfo(currencies[0], currencies[1], pair.getString("id"))) + } + } + + companion object { + private const val NAME = "OmniTrade" + private const val TTS_NAME = "Omni Trade" + private const val URL = "https://omnitrade.io/api/v2/tickers/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://omnitrade.io/api/v2/markets" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Paribu.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Paribu.kt new file mode 100644 index 00000000..1d3be2cf --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Paribu.kt @@ -0,0 +1,40 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 com.aneonex.bitcoinchecker.datamodule.util.ParseUtils +import org.json.JSONObject + +class Paribu : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + const val NAME = "Paribu" + const val TTS_NAME = NAME + const val URL = "https://www.paribu.com/ticker" + val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.TRY + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataJsonObject = jsonObject.getJSONObject("BTC_TL") + ticker.bid = ParseUtils.getDoubleFromString(dataJsonObject, "highestBid") + ticker.ask = ParseUtils.getDoubleFromString(dataJsonObject, "lowestAsk") + ticker.vol = ParseUtils.getDoubleFromString(dataJsonObject, "volume") + ticker.high = ParseUtils.getDoubleFromString(dataJsonObject, "high24hr") + ticker.low = ParseUtils.getDoubleFromString(dataJsonObject, "low24hr") + ticker.last = ParseUtils.getDoubleFromString(dataJsonObject, "last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Paymium.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Paymium.kt new file mode 100644 index 00000000..4e6fc4e1 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Paymium.kt @@ -0,0 +1,51 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Paymium : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Paymium" + private const val TTS_NAME = NAME + private const val URL = "https://paymium.com/api/v1/data/eur/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.EUR + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("price") + } + + @Throws(Exception::class) + override fun parseErrorFromJsonObject(requestId: Int, jsonObject: JSONObject, checkerInfo: CheckerInfo?): String? { + val stringBuilder = StringBuilder() + val errorsArray = jsonObject.getJSONArray("errors") + for (i in 0 until errorsArray.length()) { + if (stringBuilder.isNotEmpty()) { + stringBuilder.append("\n") + } + stringBuilder.append(errorsArray.getString(i)) + } + return stringBuilder.toString() + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Poloniex.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Poloniex.kt new file mode 100644 index 00000000..baac623d --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Poloniex.kt @@ -0,0 +1,46 @@ +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 Poloniex : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val pairJsonObject = jsonObject.getJSONObject(checkerInfo.currencyCounter + "_" + checkerInfo.currencyBase) // Reversed currencies + ticker.bid = pairJsonObject.getDouble("highestBid") + ticker.ask = pairJsonObject.getDouble("lowestAsk") + ticker.vol = pairJsonObject.getDouble("baseVolume") + ticker.last = pairJsonObject.getDouble("last") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairNames = jsonObject.names() + for (i in 0 until pairNames.length()) { + val pairId = pairNames.getString(i) ?: continue + val currencies = pairId.split("_".toRegex()).toTypedArray() + if (currencies.size != 2) continue + pairs.add(CurrencyPairInfo(currencies[1], currencies[0], pairId)) //reversed pairs + } + } + + companion object { + private const val NAME = "Poloniex" + private const val TTS_NAME = NAME + private const val URL = "https://poloniex.com/public?command=returnTicker" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Prelude.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Prelude.kt new file mode 100644 index 00000000..cece5fb4 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Prelude.kt @@ -0,0 +1,83 @@ +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 com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import org.json.JSONObject +import java.text.NumberFormat +import java.util.* + +class Prelude : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + if (requestId == 0) { + return String.format(URL_1, checkerInfo.currencyCounterLowerCase) + } + return if (Currency.USD == checkerInfo.currencyCounter) { + String.format(URL_2_USD, checkerInfo.currencyBase) + } else { + String.format(URL_2_BTC, checkerInfo.currencyBase) + } + } + + override fun getNumOfRequests(checkerInfo: CheckerInfo?): Int { + return 2 + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + // commas?! use US number parser. + val numberFormat = NumberFormat.getInstance(Locale.US) + if (requestId == 0) { + val pairings = jsonObject.getJSONArray("pairings") + for (i in 0 until pairings.length()) { + val pairing = pairings.getJSONObject(i) + val pair = pairing.getString("pair") + if (checkerInfo.currencyBase == pair) { + ticker.last = numberFormat.parse(pairing.getJSONObject("last_trade").getString("rate")).toDouble() + return + } + } + } else { + val statistics = jsonObject.getJSONObject("statistics") + ticker.vol = numberFormat.parse(statistics.getString("volume")).toDouble() + ticker.high = numberFormat.parse(statistics.getString("high")).toDouble() + ticker.low = numberFormat.parse(statistics.getString("low")).toDouble() + } + } + + // ==================== + // Get currency pairs + // ==================== + override val currencyPairsNumOfRequests: Int + get() = 2 + + override fun getCurrencyPairsUrl(requestId: Int): String? { + return if (requestId == 1) URL_CURRENCY_PAIRS_USD else URL_CURRENCY_PAIRS_BTC + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairingsArray = jsonObject.getJSONArray("pairings") + val currencyCounter = jsonObject.getString("from") + for (i in 0 until pairingsArray.length()) { + val pairObject = pairingsArray.getJSONObject(i) + pairs.add(CurrencyPairInfo( + pairObject.getString("pair"), + currencyCounter, + null + )) + } + } + + companion object { + private const val NAME = "Prelude" + private const val TTS_NAME = NAME + private const val URL_1 = "https://api.prelude.io/pairings/%1\$s" + private const val URL_2_BTC = "https://api.prelude.io/statistics/%1\$s" + private const val URL_2_USD = "https://api.prelude.io/statistics-usd/%1\$s" + private const val URL_CURRENCY_PAIRS_BTC = "https://api.prelude.io/pairings/btc" + private const val URL_CURRENCY_PAIRS_USD = "https://api.prelude.io/pairings/usd" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/QuadrigaCX.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/QuadrigaCX.kt new file mode 100644 index 00000000..8d5b1234 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/QuadrigaCX.kt @@ -0,0 +1,53 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class QuadrigaCX : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "QuadrigaCX" + private const val TTS_NAME = "Quadriga CX" + private const val URL = "https://api.quadrigacx.com/v2/ticker?book=%1\$s_%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BCH] = arrayOf( + Currency.CAD + ) + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.CAD, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.BTG] = arrayOf( + Currency.CAD + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + VirtualCurrency.BTC, + Currency.CAD + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.CAD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + ticker.timestamp = jsonObject.getLong("timestamp") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Quoine.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Quoine.kt new file mode 100644 index 00000000..e1d656a6 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Quoine.kt @@ -0,0 +1,58 @@ +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 Quoine : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("market_bid") + ticker.ask = jsonObject.getDouble("market_ask") + ticker.vol = jsonObject.getDouble("volume_24h") + ticker.high = jsonObject.getDouble("high_market_ask") + ticker.low = jsonObject.getDouble("low_market_bid") + ticker.last = jsonObject.getDouble("last_traded_price") + } + + // ==================== + // 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) { + val pairsJsonArray = JSONArray(responseString) + for (i in 0 until pairsJsonArray.length()) { + val pairJsonObject = pairsJsonArray.getJSONObject(i) + if ("CASH" != pairJsonObject.getString("code")) { + continue + } + val currencyCounter = pairJsonObject.getString("currency") + val pairName = pairJsonObject.getString("currency_pair_code") + if (pairName != null && currencyCounter != null && pairName.endsWith(currencyCounter)) { + val currencyBase = pairName.substring(0, pairName.length - currencyCounter.length) + pairs.add(CurrencyPairInfo( + currencyBase, + currencyCounter, + pairName)) + } + } + } + + companion object { + private const val NAME = "Quoine" + private const val TTS_NAME = NAME + private const val URL = "https://api.quoine.com/products/code/CASH/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://api.quoine.com/products/" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Ripio.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Ripio.kt new file mode 100644 index 00000000..1ea9ad06 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Ripio.kt @@ -0,0 +1,36 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Ripio : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Ripio" + private const val TTS_NAME = NAME + private const val URL = "https://www.ripio.com/api/v1/rates/" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.ARS + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val ratesJsonObject = jsonObject.getJSONObject("rates") + ticker.bid = ratesJsonObject.getDouble("ARS_SELL") // reversed + ticker.ask = ratesJsonObject.getDouble("ARS_BUY") // reversed + ticker.last = ticker.ask + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/SatoshiTango.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/SatoshiTango.kt new file mode 100644 index 00000000..0e73ab2f --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/SatoshiTango.kt @@ -0,0 +1,41 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class SatoshiTango : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "SatoshiTango" + private const val TTS_NAME = "Satoshi Tango" + private const val URL = "https://api.satoshitango.com/v2/ticker" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD, + Currency.ARS, + Currency.EUR + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val currencyCode = checkerInfo.currencyCounterLowerCase + checkerInfo.currencyBaseLowerCase + val tickerJsonObject = jsonObject.getJSONObject("data") + val buyObject = tickerJsonObject.getJSONObject("compra") + val sellObject = tickerJsonObject.getJSONObject("venta") + ticker.ask = buyObject.getDouble(currencyCode) + ticker.bid = sellObject.getDouble(currencyCode) + ticker.last = ticker.ask + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ShapeShift.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ShapeShift.kt new file mode 100644 index 00000000..1e62ef7e --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ShapeShift.kt @@ -0,0 +1,59 @@ +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 com.aneonex.bitcoinchecker.datamodule.util.ParseUtils +import org.json.JSONObject +import java.util.* + +class ShapeShift : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.last = ParseUtils.getDoubleFromString(jsonObject, "rate") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val jsonCoinNames = jsonObject.names() + val availableCoinNames: MutableList = ArrayList(jsonCoinNames.length()) + for (i in 0 until jsonCoinNames.length()) { + val coinJsonObject = jsonObject.getJSONObject(jsonCoinNames.getString(i)) + if ("available" == coinJsonObject.optString("status")) { + availableCoinNames.add(coinJsonObject.getString("symbol")) + } + } + val coinesCount = availableCoinNames.size + for (i in 0 until coinesCount) { + for (j in 0 until coinesCount) { + if (i != j) { + val currencyBase = availableCoinNames[i] + val currencyCounter = availableCoinNames[j] + pairs.add(CurrencyPairInfo( + currencyBase, + currencyCounter, + null)) + } + } + } + } + + companion object { + private const val NAME = "ShapeShift" + private const val TTS_NAME = "Shape Shift" + private const val URL = "https://shapeshift.io/rate/%1\$s_%2\$s" + private const val URL_CURRENCY_PAIRS = "https://shapeshift.io/getcoins" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ShareXcoin.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ShareXcoin.kt new file mode 100644 index 00000000..b1962e5c --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/ShareXcoin.kt @@ -0,0 +1,49 @@ +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 ShareXcoin : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val marketsJsonArray = jsonObject.getJSONArray("markets") + for (i in 0 until marketsJsonArray.length()) { + val marketJsonObject = marketsJsonArray.getJSONObject(i) + pairs.add(CurrencyPairInfo( + marketJsonObject.getString("coin1"), + marketJsonObject.getString("coin2"), + marketJsonObject.getString("market_id"))) + } + } + + companion object { + private const val NAME = "ShareXcoin" + private const val TTS_NAME = "Share X coin" + private const val URL = "https://sharexcoin.com/public_api/v1/market/%1\$s_%2\$s/summary" + private const val URL_CURRENCY_PAIRS = "https://sharexcoin.com/public_api/v1/market/summary" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/SurBitcoin.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/SurBitcoin.kt new file mode 100644 index 00000000..fd1af369 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/SurBitcoin.kt @@ -0,0 +1,38 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class SurBitcoin : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "SurBitcoin" + private const val TTS_NAME = "Sur Bitcoin" + private const val URL = "https://api.blinktrade.com/api/v1/%2\$s/ticker?crypto_currency=%1\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.VEF + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("buy") + ticker.ask = jsonObject.getDouble("sell") + ticker.vol = jsonObject.getDouble("vol") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/SurBtc.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/SurBtc.kt new file mode 100644 index 00000000..d9cf4863 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/SurBtc.kt @@ -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.JSONObject + +/** + * Implements SurBTC connection to the API + * @author Eduardo Laguna + */ +class SurBtc : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerJsonObject = jsonObject.getJSONObject("ticker") + ticker.bid = tickerJsonObject.getJSONArray("max_bid").getDouble(0) + ticker.ask = tickerJsonObject.getJSONArray("min_ask").getDouble(0) + ticker.vol = tickerJsonObject.getJSONArray("volume").getDouble(0) + ticker.last = tickerJsonObject.getJSONArray("last_price").getDouble(0) + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val marketsJsonArray = jsonObject.getJSONArray("markets") + for (i in 0 until marketsJsonArray.length()) { + val marketJsonObject = marketsJsonArray.getJSONObject(i) + pairs.add(CurrencyPairInfo( + marketJsonObject.getString("base_currency"), + marketJsonObject.getString("quote_currency"), + marketJsonObject.getString("id"))) + } + } + + companion object { + private const val NAME = "SurBtc" + private const val TTS_NAME = "Sur BTC" + private const val URL = "https://www.surbtc.com/api/v2/markets/%1\$s/ticker.json" + private const val URL_CURRENCY_PAIRS = "https://www.surbtc.com/api/v2/markets.json" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/TheRock.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/TheRock.kt new file mode 100644 index 00000000..90399563 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/TheRock.kt @@ -0,0 +1,90 @@ +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 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 + +class TheRock : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "TheRock" + private const val TTS_NAME = "The Rock" + private const val URL = "https://api.therocktrading.com/v1/funds/%1\$s/ticker" + private const val URL_CURRENCY_PAIRS = "https://api.therocktrading.com/v1/funds" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.EUR, + Currency.USD, + VirtualCurrency.XRP + ) + CURRENCY_PAIRS[Currency.EUR] = arrayOf( + VirtualCurrency.DOGE, + VirtualCurrency.XRP + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + VirtualCurrency.BTC, + Currency.EUR, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.NMC] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.PPC] = arrayOf( + Currency.EUR + ) + CURRENCY_PAIRS[Currency.USD] = arrayOf( + VirtualCurrency.XRP + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + var pairId = checkerInfo.currencyPairId + if (pairId == null) { + pairId = fixCurrency(checkerInfo.currencyBase) + fixCurrency(checkerInfo.currencyCounter) + } + return String.format(URL, pairId) + } + + private fun fixCurrency(currency: String?): String? { + return if (VirtualCurrency.DOGE == currency) { + VirtualCurrency.DOG + } else currency + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val fundsJsonArray = jsonObject.getJSONArray("funds") + for (i in 0 until fundsJsonArray.length()) { + val pairJsonObject = fundsJsonArray.getJSONObject(i) + pairs.add(CurrencyPairInfo( + pairJsonObject.getString("trade_currency"), + pairJsonObject.getString("base_currency"), + pairJsonObject.getString("id")) + ) + } + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Unisend.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Unisend.kt new file mode 100644 index 00000000..d6c9b8bd --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Unisend.kt @@ -0,0 +1,36 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Unisend : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Unisend" + private const val TTS_NAME = "Uni send" + private const val URL = "https://www.unisend.com/api/price/ar/ars_btc" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.ARS + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val pricesJsonObject = jsonObject.getJSONObject("prices") + ticker.bid = pricesJsonObject.getDouble("sell") // reversed! + ticker.ask = pricesJsonObject.getDouble("buy") // reversed! + ticker.last = ticker.ask + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Unknown.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Unknown.kt new file mode 100644 index 00000000..94367878 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Unknown.kt @@ -0,0 +1,27 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.R +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency + +class Unknown : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "UNKNOWN" + private const val TTS_NAME = NAME + private const val URL = "" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf(VirtualCurrency.BTC) + } + } + + override val cautionResId: Int + get() = R.string.market_caution_unknown + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Unocoin.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Unocoin.kt new file mode 100644 index 00000000..a5ace5cf --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Unocoin.kt @@ -0,0 +1,35 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Unocoin : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Unocoin" + private const val TTS_NAME = "Uno Coin" + private const val URL = "https://www.unocoin.com/trade?all" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.INR + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("sell") + ticker.ask = jsonObject.getDouble("buy") + ticker.last = jsonObject.getDouble("avg") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Uphold.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Uphold.kt new file mode 100644 index 00000000..60c461dc --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Uphold.kt @@ -0,0 +1,62 @@ +// @joseccnet contribution. +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 com.aneonex.bitcoinchecker.datamodule.util.ParseUtils +import org.json.JSONArray +import org.json.JSONObject + +class Uphold : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = ParseUtils.getDoubleFromString(jsonObject, "bid") + ticker.ask = ParseUtils.getDoubleFromString(jsonObject, "ask") + ticker.last = (ticker.bid + ticker.ask) / 2 //This is how Uphold operate on production (as I observed) + } + + // ==================== + // 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) { + val pairsJsonArray = JSONArray(responseString) + for (i in 0 until pairsJsonArray.length()) { + val pairJsonObject = pairsJsonArray.getJSONObject(i) + val pairId = pairJsonObject.getString("pair") + val currencyCounter = pairJsonObject.getString("currency") + if (currencyCounter != null && pairId != null && pairId.endsWith(currencyCounter)) { + val currencyBase = pairId.substring(0, pairId.length - currencyCounter.length) + if (currencyCounter != currencyBase) { + // normal pair + pairs.add(CurrencyPairInfo( + currencyBase, + currencyCounter, + pairId)) + // reversed pair + pairs.add(CurrencyPairInfo( + currencyCounter, + currencyBase, + currencyCounter + currencyBase)) + } + } + } + } + + companion object { + private const val NAME = "Uphold" + private const val TTS_NAME = NAME + private const val URL = "https://api.uphold.com/v0/ticker/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://api.uphold.com/v0/ticker" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Urdubit.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Urdubit.kt new file mode 100644 index 00000000..4a86fd7d --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Urdubit.kt @@ -0,0 +1,42 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +/** + * Created by naveed on 17/01/2017. + */ +class Urdubit : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Urdubit" + private const val TTS_NAME = NAME + private const val URL = "https://api.blinktrade.com/api/v1/%2\$s/ticker?crypto_currency=%1\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.PKR + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("buy") + ticker.ask = jsonObject.getDouble("sell") + ticker.vol = jsonObject.getDouble("vol") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + //ticker.timestamp = jsonObject.getLong("timestamp"); + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/VBtc.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/VBtc.kt new file mode 100644 index 00000000..d434c619 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/VBtc.kt @@ -0,0 +1,38 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class VBtc : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "VBTC.vn" + private const val TTS_NAME = "V BTC" + private const val URL = "https://api.blinktrade.com/api/v1/%2\$s/ticker?crypto_currency=%1\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.VND + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("buy") + ticker.ask = jsonObject.getDouble("sell") + ticker.vol = jsonObject.getDouble("vol") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/VaultOfSatoshi.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/VaultOfSatoshi.kt new file mode 100644 index 00000000..2825cb5f --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/VaultOfSatoshi.kt @@ -0,0 +1,65 @@ +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 +import java.util.* + +class VaultOfSatoshi : Market(NAME, TTS_NAME, null) { + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val dataObject = jsonObject.getJSONObject("data") + ticker.vol = getDoubleFromMtgoxFormatObject(dataObject, "volume_1day") + ticker.high = getDoubleFromMtgoxFormatObject(dataObject, "max_price") + ticker.low = getDoubleFromMtgoxFormatObject(dataObject, "min_price") + ticker.last = getDoubleFromMtgoxFormatObject(dataObject, "closing_price") + ticker.timestamp = dataObject.getLong("date") + } + + @Throws(Exception::class) + private fun getDoubleFromMtgoxFormatObject(jsonObject: JSONObject, key: String): Double { + val innerObject = jsonObject.getJSONObject(key) + return innerObject.getDouble("value") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val dataJsonArray = jsonObject.getJSONArray("data") + val virtualCurrencies = ArrayList() + val currencies = ArrayList() + for (i in 0 until dataJsonArray.length()) { + val currencyJsonObject = dataJsonArray.getJSONObject(i) + if (currencyJsonObject.getInt("virtual") != 0) virtualCurrencies.add(currencyJsonObject.getString("code")) else currencies.add(currencyJsonObject.getString("code")) + } + val virtualCurrenciesCount = virtualCurrencies.size + val currenciesCount = currencies.size + for (i in 0 until virtualCurrenciesCount) { + for (j in 0 until currenciesCount) { + pairs.add(CurrencyPairInfo(virtualCurrencies[i], currencies[j], null)) + } + for (j in 0 until virtualCurrenciesCount) { + if (i != j) pairs.add(CurrencyPairInfo(virtualCurrencies[i], virtualCurrencies[j], null)) + } + } + } + + companion object { + private const val NAME = "VaultOfSatoshi" + private const val TTS_NAME = "Vault Of Satoshi" + private const val URL = "https://api.vaultofsatoshi.com/public/ticker?order_currency=%1\$s&payment_currency=%2\$s" + private const val URL_CURRENCY_PAIRS = "https://api.vaultofsatoshi.com/public/currency" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Vaultoro.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Vaultoro.kt new file mode 100644 index 00000000..a60cb437 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Vaultoro.kt @@ -0,0 +1,32 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Vaultoro : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Vaultoro" + private const val TTS_NAME = NAME + private const val URL = "https://api.vaultoro.com/latest/" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[Currency.GOLD] = arrayOf( + VirtualCurrency.BTC + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTicker(requestId: Int, responseString: String, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.last = responseString.toDouble() + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Vircurex.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Vircurex.kt new file mode 100644 index 00000000..03d8e9df --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Vircurex.kt @@ -0,0 +1,452 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Vircurex : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Vircurex" + private const val TTS_NAME = NAME + private const val URL = "https://api.vircurex.com/api/get_info_for_1_currency.json?base=%1\$s&alt=%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.ANC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.DGC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.DOGE] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.DVC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.FRC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.FTC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.I0C] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.IXC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.NMC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.NVC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.NXT] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.PPC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.QRK] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.TRC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.VTC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.VTC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.WDC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.WDC] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.XPM + ) + CURRENCY_PAIRS[VirtualCurrency.XPM] = arrayOf( + Currency.USD, + Currency.EUR, + VirtualCurrency.BTC, + VirtualCurrency.ANC, + VirtualCurrency.DGC, + VirtualCurrency.DOGE, + VirtualCurrency.DVC, + VirtualCurrency.FRC, + VirtualCurrency.FTC, + VirtualCurrency.I0C, + VirtualCurrency.IXC, + VirtualCurrency.LTC, + VirtualCurrency.NMC, + VirtualCurrency.NVC, + VirtualCurrency.NXT, + VirtualCurrency.PPC, + VirtualCurrency.QRK, + VirtualCurrency.TRC, + VirtualCurrency.VTC, + VirtualCurrency.WDC) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("highest_bid") + ticker.ask = jsonObject.getDouble("lowest_ask") + ticker.vol = jsonObject.getDouble("volume") + // ticker.high; +// ticker.low; + ticker.last = jsonObject.getDouble("last_trade") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Virtex.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Virtex.kt new file mode 100644 index 00000000..e448dc57 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Virtex.kt @@ -0,0 +1,54 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 + +class Virtex : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "CaVirtEx" + private const val TTS_NAME = NAME + private const val URL = "https://cavirtex.com/api2/ticker.json" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.CAD, + VirtualCurrency.LTC + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + Currency.CAD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val tickerJsonObject = jsonObject.getJSONObject("ticker") + val pairJsonObject = tickerJsonObject.getJSONObject(checkerInfo.currencyBase + checkerInfo.currencyCounter) + if (!pairJsonObject.isNull("buy")) { + ticker.bid = pairJsonObject.getDouble("buy") + } + if (!pairJsonObject.isNull("sell")) { + ticker.ask = pairJsonObject.getDouble("sell") + } + if (!pairJsonObject.isNull("volume")) { + ticker.vol = pairJsonObject.getDouble("volume") + } + if (!pairJsonObject.isNull("high")) { + ticker.high = pairJsonObject.getDouble("high") + } + if (!pairJsonObject.isNull("low")) { + ticker.low = pairJsonObject.getDouble("low") + } + ticker.last = pairJsonObject.getDouble("last") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Winkdex.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Winkdex.kt new file mode 100644 index 00000000..373a40ff --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Winkdex.kt @@ -0,0 +1,36 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class Winkdex : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Winkdex" + private const val TTS_NAME = NAME + private const val URL = "http://winkdex.com/static/js/stats.js" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.USD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.vol = jsonObject.getDouble("volume_btc_24h") + ticker.high = jsonObject.getDouble("winkdex_high_24h") + ticker.low = jsonObject.getDouble("winkdex_low_24h") + ticker.last = jsonObject.getDouble("winkdex_usd") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/YoBit.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/YoBit.kt new file mode 100644 index 00000000..78bf57ea --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/YoBit.kt @@ -0,0 +1,59 @@ +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 com.aneonex.bitcoinchecker.datamodule.R +import org.json.JSONObject +import java.util.* + +class YoBit : Market(NAME, TTS_NAME, null) { + override val cautionResId: Int + get() = R.string.market_caution_yobit + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyPairId) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + val names = jsonObject.names() + val tickerJsonObject = jsonObject.getJSONObject(names.getString(0)) + ticker.bid = tickerJsonObject.getDouble("sell") + ticker.ask = tickerJsonObject.getDouble("buy") + ticker.vol = tickerJsonObject.getDouble("vol") + ticker.high = tickerJsonObject.getDouble("high") + ticker.low = tickerJsonObject.getDouble("low") + ticker.last = tickerJsonObject.getDouble("last") + ticker.timestamp = tickerJsonObject.getLong("updated") + } + + // ==================== + // Get currency pairs + // ==================== + override fun getCurrencyPairsUrl(requestId: Int): String? { + return URL_CURRENCY_PAIRS + } + + @Throws(Exception::class) + override fun parseCurrencyPairsFromJsonObject(requestId: Int, jsonObject: JSONObject, pairs: MutableList) { + val pairsJsonObject = jsonObject.getJSONObject("pairs") + val pairsNames = pairsJsonObject.names() + for (i in 0 until pairsNames.length()) { + val pairId = pairsNames.getString(i) ?: continue + val currencies = pairId.split("_".toRegex()).toTypedArray() + if (currencies.size != 2) continue + val currencyBase = currencies[0].toUpperCase(Locale.ENGLISH) + val currencyCounter = currencies[1].toUpperCase(Locale.ENGLISH) + pairs.add(CurrencyPairInfo(currencyBase, currencyCounter, pairId)) + } + } + + companion object { + private const val NAME = "YoBit" + private const val TTS_NAME = NAME + private const val URL = "https://yobit.net/api/3/ticker/%1\$s" + private const val URL_CURRENCY_PAIRS = "https://yobit.net/api/3/info" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Zaydo.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Zaydo.kt new file mode 100644 index 00000000..9b1355f0 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Zaydo.kt @@ -0,0 +1,39 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +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 com.aneonex.bitcoinchecker.datamodule.util.ParseUtils +import org.json.JSONObject + +class Zaydo : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Zaydo" + private const val TTS_NAME = NAME + private const val URL = "http://chart.zyado.com/ticker.json" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.EUR + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return URL + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + 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") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Zebpay.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Zebpay.kt new file mode 100644 index 00000000..7abde0bd --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/Zebpay.kt @@ -0,0 +1,92 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import org.json.JSONObject + +class Zebpay : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Zebpay" + private const val TTS_NAME = "Zeb Pay" + private const val URL = "https://www.zebapi.com/api/v1/market/ticker-new/%1\$s/%2\$s" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.AE] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.BAT] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.BCH] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + VirtualCurrency.TUSD + ) + CURRENCY_PAIRS[VirtualCurrency.BTG] = arrayOf( + VirtualCurrency.BTC, + VirtualCurrency.TUSD + ) + CURRENCY_PAIRS[VirtualCurrency.CMT] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.EOS] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.ETH] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.GNT] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.IOST] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.KNC] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.LTC] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.NCASH] = arrayOf( + VirtualCurrency.BTC, + VirtualCurrency.XRP + ) + CURRENCY_PAIRS[VirtualCurrency.OMG] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.REP] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.TRX] = arrayOf( + VirtualCurrency.BTC, + VirtualCurrency.XRP + ) + CURRENCY_PAIRS[VirtualCurrency.XRP] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.ZIL] = arrayOf( + VirtualCurrency.BTC + ) + CURRENCY_PAIRS[VirtualCurrency.ZRX] = arrayOf( + VirtualCurrency.BTC + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBaseLowerCase, checkerInfo.currencyCounterLowerCase) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("sell") + ticker.ask = jsonObject.getDouble("buy") + ticker.vol = jsonObject.getDouble("volume") + ticker.last = jsonObject.getDouble("market") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/example/MarketExample.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/example/MarketExample.kt new file mode 100644 index 00000000..7060f2bb --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/model/market/example/MarketExample.kt @@ -0,0 +1,44 @@ +package com.aneonex.bitcoinchecker.datamodule.model.market.example + +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.Ticker +import com.aneonex.bitcoinchecker.datamodule.model.currency.Currency +import com.aneonex.bitcoinchecker.datamodule.model.currency.VirtualCurrency +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap +import org.json.JSONObject + +class MarketExample : Market(NAME, TTS_NAME, CURRENCY_PAIRS) { + companion object { + private const val NAME = "Market Example" + private const val TTS_NAME = NAME + private const val URL = "https://www.marketexample.com/api/%1\$s_%2\$s/ticker/" + private val CURRENCY_PAIRS: CurrencyPairsMap = CurrencyPairsMap() + + init { + CURRENCY_PAIRS[VirtualCurrency.BTC] = arrayOf( + Currency.CNY, + Currency.USD + ) + CURRENCY_PAIRS[VirtualCurrency.DOGE] = arrayOf( + VirtualCurrency.BTC, + Currency.USD + ) + } + } + + override fun getUrl(requestId: Int, checkerInfo: CheckerInfo): String { + return String.format(URL, checkerInfo.currencyBase, checkerInfo.currencyCounter) + } + + @Throws(Exception::class) + override fun parseTickerFromJsonObject(requestId: Int, jsonObject: JSONObject, ticker: Ticker, checkerInfo: CheckerInfo) { + ticker.bid = jsonObject.getDouble("bid") + ticker.ask = jsonObject.getDouble("ask") + ticker.vol = jsonObject.getDouble("volume") + ticker.high = jsonObject.getDouble("high") + ticker.low = jsonObject.getDouble("low") + ticker.last = jsonObject.getDouble("last") + ticker.timestamp = jsonObject.getLong("timestamp") + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/CurrencyPairsMapHelper.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/CurrencyPairsMapHelper.kt new file mode 100644 index 00000000..0d28ce18 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/CurrencyPairsMapHelper.kt @@ -0,0 +1,64 @@ +package com.aneonex.bitcoinchecker.datamodule.util + +import com.aneonex.bitcoinchecker.datamodule.model.CurrencyPairsListWithDate +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencyPairsMap + +class CurrencyPairsMapHelper(currencyPairsListWithDate: CurrencyPairsListWithDate?) { + val date: Long + val currencyPairs: CurrencyPairsMap = CurrencyPairsMap() + private val currencyPairsIds: HashMap = HashMap() + var pairsCount = 0 + fun getCurrencyPairId(currencyBase: String?, currencyCounter: String?): String? { + return currencyPairsIds[createCurrencyPairKey(currencyBase, currencyCounter)] + } + + private fun createCurrencyPairKey(currencyBase: String?, currencyCounter: String?): String { + return String.format("%1\$s_%2\$s", currencyBase, currencyCounter) + } + + init { + + if (currencyPairsListWithDate == null) { + date = 0 + } + else { + date = currencyPairsListWithDate.date + + if(currencyPairsListWithDate.pairs != null) { + val sortedPairs = currencyPairsListWithDate.pairs!! + + pairsCount = sortedPairs.size + + // Calculate size for every currency group + val currencyGroupSizes = HashMap() + for (currencyPairInfo in sortedPairs) { + var currentCurrencyGroupSize = currencyGroupSizes[currencyPairInfo.currencyBase] + if (currentCurrencyGroupSize == null) { + currentCurrencyGroupSize = 1 + } else { + ++currentCurrencyGroupSize + } + currencyGroupSizes[currencyPairInfo.currencyBase] = currentCurrencyGroupSize + } + + var currentGroupPositionToInsert = 0 + for (currencyPairInfo in sortedPairs) { + var currencyGroup = currencyPairs[currencyPairInfo.currencyBase] + if (currencyGroup == null) { + // Initialize array with pre-calculated size + currencyGroup = Array(currencyGroupSizes[currencyPairInfo.currencyBase] ?: 0) { String() } + currencyPairs[currencyPairInfo.currencyBase] = currencyGroup + currentGroupPositionToInsert = 0 + } else { + ++currentGroupPositionToInsert + } + currencyGroup[currentGroupPositionToInsert] = currencyPairInfo.currencyCounter + if (currencyPairInfo.currencyPairId != null) { + val pairKey = createCurrencyPairKey(currencyPairInfo.currencyBase, currencyPairInfo.currencyCounter) + currencyPairsIds[pairKey] = currencyPairInfo.currencyPairId + } + } + } + } + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/CurrencyUtils.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/CurrencyUtils.kt new file mode 100644 index 00000000..db5fdb6d --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/CurrencyUtils.kt @@ -0,0 +1,19 @@ +package com.aneonex.bitcoinchecker.datamodule.util + +import com.aneonex.bitcoinchecker.datamodule.model.CurrencySubunit +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrenciesSubunits +import com.aneonex.bitcoinchecker.datamodule.model.currency.CurrencySymbols + +object CurrencyUtils { + fun getCurrencySymbol(currency: String): String { + return if (CurrencySymbols.CURRENCY_SYMBOLS.containsKey(currency)) CurrencySymbols.CURRENCY_SYMBOLS[currency]!! else currency + } + + fun getCurrencySubunit(currency: String?, subunitToUnit: Long): CurrencySubunit { + if (CurrenciesSubunits.CURRENCIES_SUBUNITS.containsKey(currency)) { + val subunits = CurrenciesSubunits.CURRENCIES_SUBUNITS[currency] + if (subunits!!.containsKey(subunitToUnit)) return subunits[subunitToUnit]!! + } + return CurrencySubunit(currency ?: "", 1) + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/FormatUtilsBase.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/FormatUtilsBase.kt new file mode 100644 index 00000000..77b3c997 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/FormatUtilsBase.kt @@ -0,0 +1,90 @@ +package com.aneonex.bitcoinchecker.datamodule.util + +import android.content.Context +import android.text.format.DateFormat +import android.text.format.DateUtils +import com.aneonex.bitcoinchecker.datamodule.model.CurrencySubunit +import java.text.DecimalFormat +import java.util.* + +object FormatUtilsBase { + // ==================== + // Double formatting + // ==================== + private val FORMAT_TWO_DECIMAL = DecimalFormat("#,###.00") + private val FORMAT_FIVE_SIGNIFICANT_AT_MOST = DecimalFormat("@#####") + private val FORMAT_EIGHT_SIGNIFICANT_AT_MOST = DecimalFormat("@#######") + + // ==================== + // Format methods + // ==================== + fun formatDouble(value: Double/*, isPrice: Boolean*/): String { + return formatDouble(if (value < 1) FORMAT_FIVE_SIGNIFICANT_AT_MOST else FORMAT_TWO_DECIMAL, value) + } + + fun formatDoubleWithFiveMax(value: Double): String { + return formatDouble(FORMAT_FIVE_SIGNIFICANT_AT_MOST, value) + } + + private fun formatDoubleWithEightMax(value: Double): String { + return formatDouble(FORMAT_EIGHT_SIGNIFICANT_AT_MOST, value) + } + + private fun formatDouble(decimalFormat: DecimalFormat, value: Double): String { + synchronized(decimalFormat) { + try { + return decimalFormat.format(value) + } catch (e: Exception) { + e.printStackTrace() + } + return value.toString() + } + } + + // ==================== + // Price formatting + // ==================== + fun formatPriceWithCurrency(price: Double, subunitDst: CurrencySubunit): String { + return formatPriceWithCurrency(price, subunitDst, true) + } + + fun formatPriceWithCurrency(price: Double, subunitDst: CurrencySubunit, showCurrencyDst: Boolean): String { + var priceString = formatPriceValueForSubunit(price, subunitDst, forceInteger = false, skipNoSignificantDecimal = false) + if (showCurrencyDst) { + priceString = formatPriceWithCurrency(priceString, subunitDst.name) + } + return priceString + } + + @kotlin.jvm.JvmStatic + fun formatPriceWithCurrency(value: Double, currency: String): String { + return formatPriceWithCurrency(formatDouble(value), currency) + } + + private fun formatPriceWithCurrency(priceString: String, currency: String): String { + return priceString + " " + CurrencyUtils.getCurrencySymbol(currency) + } + + fun formatPriceValueForSubunit(price: Double, subunitDst: CurrencySubunit, forceInteger: Boolean, skipNoSignificantDecimal: Boolean): String { + val calcPrice = price * subunitDst.subunitToUnit.toDouble() + return if (!subunitDst.allowDecimal || forceInteger) return (calcPrice + 0.5f).toLong().toString() + else if (skipNoSignificantDecimal) formatDoubleWithEightMax(calcPrice) else formatDouble(calcPrice) + } + + // ==================== + // Date && Time formatting + // ==================== + @kotlin.jvm.JvmStatic + fun formatSameDayTimeOrDate(context: Context?, time: Long): String { + return if (DateUtils.isToday(time)) { + DateFormat.getTimeFormat(context).format(Date(time)) + } else { + DateFormat.getDateFormat(context).format(Date(time)) + } + } + + fun formatDateTime(context: Context?, time: Long): String { + val date = Date(time) + return DateFormat.getTimeFormat(context).format(date) + ", " + DateFormat.getDateFormat(context).format(date) + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/MarketsConfigUtils.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/MarketsConfigUtils.kt new file mode 100644 index 00000000..ea9eae56 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/MarketsConfigUtils.kt @@ -0,0 +1,32 @@ +package com.aneonex.bitcoinchecker.datamodule.util + +import com.aneonex.bitcoinchecker.datamodule.config.MarketsConfig +import com.aneonex.bitcoinchecker.datamodule.model.Market +import com.aneonex.bitcoinchecker.datamodule.model.market.Unknown +import java.util.* + +object MarketsConfigUtils { + private val UNKNOWN: Market = Unknown() + + fun getMarketById(id: Int): Market { + synchronized(MarketsConfig.MARKETS) { + if (id >= 0 && id < MarketsConfig.MARKETS.size) { + return ArrayList(MarketsConfig.MARKETS.values)[id] + } + } + return UNKNOWN + } + + @kotlin.jvm.JvmStatic + fun getMarketByKey(key: String?): Market { + synchronized(MarketsConfig.MARKETS) { if (MarketsConfig.MARKETS.containsKey(key)) return MarketsConfig.MARKETS[key]!! } + return UNKNOWN + } + + fun getMarketIdByKey(key: String): Int { + for ((i, market) in MarketsConfig.MARKETS.values.withIndex()) { + if (market.key == key) return i + } + return 0 + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/ParseUtils.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/ParseUtils.kt new file mode 100644 index 00000000..f4b844be --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/ParseUtils.kt @@ -0,0 +1,11 @@ +package com.aneonex.bitcoinchecker.datamodule.util + +import org.json.JSONException +import org.json.JSONObject + +object ParseUtils { + @Throws(NumberFormatException::class, JSONException::class) + fun getDoubleFromString(jsonObject: JSONObject, name: String): Double { + return jsonObject.getString(name).toDouble() + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/TimeUtils.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/TimeUtils.kt new file mode 100644 index 00000000..9b149e83 --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/TimeUtils.kt @@ -0,0 +1,14 @@ +package com.aneonex.bitcoinchecker.datamodule.util + +object TimeUtils { +// const val NANOS_IN_MILLIS: Long = 1000 + const val MILLIS_IN_SECOND: Long = 1000 + const val MILLIS_IN_MINUTE = 60 * MILLIS_IN_SECOND + const val MILLIS_IN_HOUR = 60 * MILLIS_IN_MINUTE + const val MILLIS_IN_DAY = 24 * MILLIS_IN_HOUR + private const val MILLIS_IN_YEAR = 365 * MILLIS_IN_DAY + fun parseTimeToMillis(time: Long): Long { + if (time < MILLIS_IN_YEAR) return time * MILLIS_IN_SECOND else if (time > 5000 * MILLIS_IN_YEAR) return time / 1000 + return time + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/XmlParserUtils.kt b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/XmlParserUtils.kt new file mode 100644 index 00000000..433e157e --- /dev/null +++ b/dataModule/src/main/java/com/aneonex/bitcoinchecker/datamodule/util/XmlParserUtils.kt @@ -0,0 +1,33 @@ +package com.aneonex.bitcoinchecker.datamodule.util + +import org.w3c.dom.Document +import org.w3c.dom.Node + +object XmlParserUtils { + fun getFirstElementByTagName(doc: Document, name: String?): Node? { + val nodes = doc.getElementsByTagName(name) + return if (nodes != null && nodes.length > 0) nodes.item(0) else null + } + + @Throws(Exception::class) + fun getDoubleNodeValue(node: Node?): Double { + return getTextNodeValue(node).toDouble() + } + + @Throws(Exception::class) + fun getTextNodeValue(node: Node?): String { + var child: Node? + if (node != null) { + if (node.hasChildNodes()) { + child = node.firstChild + while (child != null) { + if (child.nodeType == Node.TEXT_NODE) { + return child.nodeValue + } + child = child.nextSibling + } + } + } + return "" + } +} \ No newline at end of file diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/config/MarketsConfig.java b/dataModule/src/main/java/com/mobnetic/coinguardian/config/MarketsConfig.java deleted file mode 100644 index 07848ec4..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/config/MarketsConfig.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.mobnetic.coinguardian.config; - -import com.mobnetic.coinguardian.model.Market; -import com.mobnetic.coinguardian.model.market.*; - -import java.util.LinkedHashMap; - -public class MarketsConfig { - - public final static LinkedHashMap MARKETS = new LinkedHashMap(); - private final static void addMarket(Market market) { - MarketsConfig.MARKETS.put(market.key, market); - } - - static { - addMarket(new Bitstamp()); - addMarket(new Mercado()); - addMarket(new Kraken()); - addMarket(new Bitfinex()); - addMarket(new Okcoin()); - addMarket(new Cryptsy()); - addMarket(new Coinbase()); - addMarket(new Vircurex()); - addMarket(new Fxbtc()); - addMarket(new Bter()); - addMarket(new Justcoin()); - addMarket(new Btcturk()); - addMarket(new Coinse()); - addMarket(new Campbx()); - addMarket(new TheRock()); - addMarket(new CexIO()); - addMarket(new Virtex()); - addMarket(new Huobi()); - addMarket(new VaultOfSatoshi()); - addMarket(new CoinMarketIO()); - addMarket(new McxNOW()); - addMarket(new CryptoTrade()); - addMarket(new MintPal()); - addMarket(new CoinJar()); - addMarket(new Poloniex()); - addMarket(new Winkdex()); - addMarket(new BitX()); - addMarket(new CCex()); - addMarket(new Bitorado()); - addMarket(new CryptoRush()); - addMarket(new CoinDesk()); - addMarket(new Koinim()); - addMarket(new FybSE()); - addMarket(new FybSG()); - addMarket(new Prelude()); - addMarket(new BitKonan()); - addMarket(new BitTrex()); - addMarket(new Comkort()); - addMarket(new Bit2c()); - addMarket(new CryptoAltex()); - addMarket(new BtcMarkets()); - addMarket(new Bleutrade()); - addMarket(new ShareXcoin()); - addMarket(new Unisend()); - addMarket(new BitcoinVenezuela()); - addMarket(new Korbit()); - addMarket(new CoinTree()); - addMarket(new Cryptonit()); - addMarket(new LakeBTC()); - addMarket(new BitMaszyna()); - addMarket(new Zaydo()); - addMarket(new AllCoin()); - addMarket(new Ripio()); - addMarket(new DolarBlueNet()); - addMarket(new CoinSwap()); - addMarket(new Paymium()); - addMarket(new Bitso()); - addMarket(new Cryptoine()); - addMarket(new BitcoinToYou()); - addMarket(new BitexLa()); - addMarket(new ItBit()); - addMarket(new BitcoinCoId()); - addMarket(new HitBtc()); - addMarket(new CleverCoin()); - addMarket(new BitBay()); - addMarket(new QuadrigaCX()); - addMarket(new CoinMateIO()); - addMarket(new Buttercoin()); - addMarket(new CoinTraderNet()); - addMarket(new LocalBitcoins()); - addMarket(new Cryptopia()); - addMarket(new Igot()); - addMarket(new Mexbt()); - addMarket(new Vaultoro()); - addMarket(new BitxCom()); - addMarket(new BtcBox()); - addMarket(new BtcXIndia()); - addMarket(new Uphold()); - addMarket(new YoBit()); - addMarket(new ShapeShift()); - addMarket(new BitoEX()); - addMarket(new OKCoinFutures()); -// addMarket(new FoscEx()); - addMarket(new CoinSecure()); - addMarket(new Dashcurex()); - addMarket(new Quoine()); - addMarket(new Livecoin()); - addMarket(new Gemini()); - addMarket(new Coinapult()); - addMarket(new Btc38()); - addMarket(new ETHEXIndia()); - addMarket(new GateCoin()); - addMarket(new Liqui()); - addMarket(new ChileBit()); - addMarket(new SurBitcoin()); - addMarket(new VBtc()); - addMarket(new Urdubit()); - addMarket(new NegocieCoins()); - addMarket(new BitMEX()); - addMarket(new BitFlyer()); - addMarket(new BitFlyerFX()); - addMarket(new Coinone()); - addMarket(new Bithumb()); - addMarket(new Coinsph()); - addMarket(new Bl3p()); - addMarket(new SurBtc()); - addMarket(new CoinFloor()); - addMarket(new Lykke()); - addMarket(new Coinnest()); - addMarket(new Braziliex()); - addMarket(new Abucoins()); - addMarket(new Zebpay()); - addMarket(new Paribu()); - addMarket(new SatoshiTango()); - addMarket(new Koinex()); -// addMarket(new Unocoin()); - addMarket(new BlinkTrade()); - addMarket(new Exmo()); - addMarket(new Binance()); - addMarket(new Kucoin()); - addMarket(new BitcoinTrade()); - addMarket(new OmniTrade()); - addMarket(new Coinome()); - addMarket(new Nocks()); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/config/Settings.java b/dataModule/src/main/java/com/mobnetic/coinguardian/config/Settings.java deleted file mode 100644 index cd52411b..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/config/Settings.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.mobnetic.coinguardian.config; - -public class Settings { - - public static String userCountry; - -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/CheckerInfo.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/CheckerInfo.java deleted file mode 100644 index ed335bc2..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/CheckerInfo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.mobnetic.coinguardian.model; - -import java.util.Locale; - -public class CheckerInfo extends CurrencyPairInfo { - - protected final int contractType; - - public CheckerInfo(String currencyBase, String currencyCounter, String currencyPairId, int contractType) { - super(currencyBase, currencyCounter, currencyPairId); - this.contractType = contractType; - } - - public String getCurrencyBaseLowerCase() { - return getCurrencyBase().toLowerCase(Locale.US); - } - - public String getCurrencyCounterLowerCase() { - return getCurrencyCounter().toLowerCase(Locale.US); - } - - public int getContractType() { - return contractType; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencyPairInfo.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencyPairInfo.java deleted file mode 100644 index dc3f689a..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencyPairInfo.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.mobnetic.coinguardian.model; - - -public class CurrencyPairInfo implements Comparable{ - - protected final String currencyBase; - protected final String currencyCounter; - protected final String currencyPairId; - - public CurrencyPairInfo(String currencyBase, String currencyCounter, String currencyPairId) { - this.currencyBase = currencyBase; - this.currencyCounter = currencyCounter; - this.currencyPairId = currencyPairId; - } - - public String getCurrencyBase() { - return currencyBase; - } - - public String getCurrencyCounter() { - return currencyCounter; - } - - public String getCurrencyPairId() { - return currencyPairId; - } - - @Override - public int compareTo(CurrencyPairInfo another) throws NullPointerException { - if(currencyBase==null || another.currencyBase==null || currencyCounter==null || another.currencyCounter==null) - throw new NullPointerException(); - - int compBase = currencyBase.compareToIgnoreCase(another.currencyBase); - return compBase!=0 ? compBase : currencyCounter.compareToIgnoreCase(another.currencyCounter); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencyPairsListWithDate.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencyPairsListWithDate.java deleted file mode 100644 index 0648b5b8..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencyPairsListWithDate.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.mobnetic.coinguardian.model; - -import java.util.List; - -public class CurrencyPairsListWithDate { - - public long date; - public List pairs; - -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencySubunit.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencySubunit.java deleted file mode 100644 index 419fb109..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencySubunit.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.mobnetic.coinguardian.model; - -public class CurrencySubunit { - - public final String name; - public final long subunitToUnit; - public final boolean allowDecimal; - - public CurrencySubunit(String name, long subunitToUnit) { - this(name, subunitToUnit, true); - } - - public CurrencySubunit(String name, long subunitToUnit, boolean allowDecimal) { - this.name = name; - this.subunitToUnit = subunitToUnit; - this.allowDecimal = allowDecimal; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencySubunitsMap.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencySubunitsMap.java deleted file mode 100644 index 09ffc221..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencySubunitsMap.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.mobnetic.coinguardian.model; - -import java.util.LinkedHashMap; - -public class CurrencySubunitsMap extends LinkedHashMap { - - private static final long serialVersionUID = -7219011491064245859L; - - public CurrencySubunitsMap(CurrencySubunit... currencySubunits) { - for(CurrencySubunit currencySubunit : currencySubunits) - put(currencySubunit.subunitToUnit, currencySubunit); - } - -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencySymbol.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencySymbol.java deleted file mode 100644 index 7aa0c5e5..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/CurrencySymbol.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.mobnetic.coinguardian.model; - -public class CurrencySymbol { - - public final String symbol; - public final boolean symbolFirst; - - public CurrencySymbol(String symbol) { - this(symbol, false); - } - - public CurrencySymbol(String symbol, boolean symbolFirst) { - this.symbol = symbol; - this.symbolFirst = symbolFirst; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/Futures.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/Futures.java deleted file mode 100644 index 3d7d766c..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/Futures.java +++ /dev/null @@ -1,26 +0,0 @@ -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; - } - -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/FuturesMarket.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/FuturesMarket.java deleted file mode 100644 index 8bb71b00..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/FuturesMarket.java +++ /dev/null @@ -1,21 +0,0 @@ -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 currencyPairs, int[] contractTypes) { - super(name, ttsName, currencyPairs); - this.contractTypes = contractTypes; - } - - @Override - public final String getUrl(int requestId, CheckerInfo checkerInfo) { - return getUrl(requestId, checkerInfo, checkerInfo.getContractType()); - } - - protected abstract String getUrl(int requestId, CheckerInfo checkerInfo, int contractType); - -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/Market.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/Market.java deleted file mode 100644 index 98754a0a..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/Market.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.mobnetic.coinguardian.model; - -import java.util.HashMap; -import java.util.List; - -import org.json.JSONObject; - -import android.text.TextUtils; - -import com.mobnetic.coinguardian.util.TimeUtils; - -public abstract class Market { - - public final String key; - public final String name; - public final String ttsName; - public HashMap currencyPairs; - - public Market(String name, String ttsName, HashMap currencyPairs) { - this.key = this.getClass().getSimpleName(); - this.name = name; - this.ttsName = ttsName; - this.currencyPairs = currencyPairs; - } - - public int getCautionResId() { - return 0; - } - - - // ==================== - // Parse Ticker - // ==================== - public int getNumOfRequests(CheckerInfo checkerInfo) { - return 1; - } - - public abstract String getUrl(int requestId, CheckerInfo checkerInfo); - - public final Ticker parseTickerMain(int requestId, String responseString, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - parseTicker(requestId, responseString, ticker, checkerInfo); - if(ticker.timestamp<=0) - ticker.timestamp = System.currentTimeMillis(); - else - ticker.timestamp = TimeUtils.parseTimeToMillis(ticker.timestamp); - - return ticker; - } - - protected void parseTicker(int requestId, String responseString, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - parseTickerFromJsonObject(requestId, new JSONObject(responseString), ticker, checkerInfo); - } - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - // do parsing - } - - // ==================== - // Parse Ticker Error - // ==================== - public final String parseErrorMain(int requestId, String responseString, CheckerInfo checkerInfo) throws Exception { - return parseError(requestId, responseString, checkerInfo); - } - - protected String parseError(int requestId, String responseString, CheckerInfo checkerInfo) throws Exception { - return parseErrorFromJsonObject(requestId, new JSONObject(responseString), checkerInfo); - } - protected String parseErrorFromJsonObject(int requestId, JSONObject jsonObject, CheckerInfo checkerInfo) throws Exception { - throw new Exception(); - } - - // ==================== - // Parse currency pairs - // ==================== - public int getCurrencyPairsNumOfRequests() { - return 1; - } - - public String getCurrencyPairsUrl(int requestId) { - return null; - } - - public final void parseCurrencyPairsMain(int requestId, String responseString, List pairs) throws Exception { - parseCurrencyPairs(requestId, responseString, pairs); - - for(int i=pairs.size()-1; i>=0; --i) { - CurrencyPairInfo currencyPairInfo = pairs.get(i); - if(currencyPairInfo==null || TextUtils.isEmpty(currencyPairInfo.getCurrencyBase()) || TextUtils.isEmpty(currencyPairInfo.getCurrencyCounter())) - pairs.remove(i); - } - } - - protected void parseCurrencyPairs(int requestId, String responseString, List pairs) throws Exception { - parseCurrencyPairsFromJsonObject(requestId, new JSONObject(responseString), pairs); - } - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - // do parsing - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/Ticker.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/Ticker.java deleted file mode 100644 index b3a22fff..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/Ticker.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.mobnetic.coinguardian.model; - - -public class Ticker { - - public double bid; - public double ask; - public double vol; - public double high; - public double low; - public double last; - public long timestamp; - - public final static int NO_DATA = -1; - - public Ticker() { - bid = NO_DATA; - ask = NO_DATA; - vol = NO_DATA; - high = NO_DATA; - low = NO_DATA; - last = NO_DATA; - timestamp = NO_DATA; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/CurrenciesSubunits.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/CurrenciesSubunits.java deleted file mode 100644 index 546b6dd7..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/CurrenciesSubunits.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.mobnetic.coinguardian.model.currency; - -import java.util.HashMap; - -import com.mobnetic.coinguardian.model.CurrencySubunit; -import com.mobnetic.coinguardian.model.CurrencySubunitsMap; - -public class CurrenciesSubunits { - - public final static HashMap CURRENCIES_SUBUNITS = new HashMap(); - static { - CURRENCIES_SUBUNITS.put(VirtualCurrency.BTC, new CurrencySubunitsMap( - new CurrencySubunit(VirtualCurrency.BTC, 1), - new CurrencySubunit(VirtualCurrency.mBTC, 1000), - new CurrencySubunit(VirtualCurrency.uBTC, 1000000), - new CurrencySubunit(VirtualCurrency.Satoshi, 100000000, false) - ) - ); - CURRENCIES_SUBUNITS.put(VirtualCurrency.LTC, new CurrencySubunitsMap( - new CurrencySubunit(VirtualCurrency.LTC, 1), - new CurrencySubunit(VirtualCurrency.mLTC, 1000) - ) - ); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/Currency.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/Currency.java deleted file mode 100644 index 7e8642d7..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/Currency.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.mobnetic.coinguardian.model.currency; - - -public class Currency { - - public static final String AED = "AED"; - public static final String AFN = "AFN"; - public static final String ALL = "ALL"; - public static final String AMD = "AMD"; - public static final String ANG = "ANG"; - public static final String AOA = "AOA"; - public static final String ARS = "ARS"; - public static final String AUD = "AUD"; - public static final String AWG = "AWG"; - public static final String AZN = "AZN"; - public static final String BAM = "BAM"; - public static final String BBD = "BBD"; - public static final String BDT = "BDT"; - public static final String BGN = "BGN"; - public static final String BHD = "BHD"; - public static final String BIF = "BIF"; - public static final String BMD = "BMD"; - public static final String BND = "BND"; - public static final String BOB = "BOB"; - public static final String BRL = "BRL"; - public static final String BSD = "BSD"; - public static final String BTN = "BTN"; - public static final String BWP = "BWP"; - public static final String BYR = "BYR"; - public static final String BZD = "BZD"; - public static final String CAD = "CAD"; - public static final String CDF = "CDF"; - public static final String CHF = "CHF"; - public static final String CLP = "CLP"; - public static final String CNY = "CNY"; - public static final String COP = "COP"; - public static final String CRC = "CRC"; - public static final String CUP = "CUP"; - public static final String CVE = "CVE"; - public static final String CZK = "CZK"; - public static final String DJF = "DJF"; - public static final String DKK = "DKK"; - public static final String DOP = "DOP"; - public static final String DZD = "DZD"; - public static final String EEK = "EEK"; - public static final String EGP = "EGP"; - public static final String ERN = "ERN"; - public static final String ETB = "ETB"; - public static final String EUR = "EUR"; - public static final String FJD = "FJD"; - public static final String FKP = "FKP"; - public static final String GBP = "GBP"; - public static final String GEL = "GEL"; - public static final String GHS = "GHS"; - public static final String GIP = "GIP"; - public static final String GMD = "GMD"; - public static final String GNF = "GNF"; - public static final String GOLD = "GOLD"; - public static final String GTQ = "GTQ"; - public static final String GYD = "GYD"; - public static final String HKD = "HKD"; - public static final String HNL = "HNL"; - public static final String HRK = "HRK"; - public static final String HTG = "HTG"; - public static final String HUF = "HUF"; - public static final String IDR = "IDR"; - public static final String ILS = "ILS"; - public static final String INR = "INR"; - public static final String IQD = "IQD"; - public static final String IRR = "IRR"; - public static final String ISK = "ISK"; - public static final String JMD = "JMD"; - public static final String JOD = "JOD"; - public static final String JPY = "JPY"; - public static final String KES = "KES"; - public static final String KGS = "KGS"; - public static final String KHR = "KHR"; - public static final String KMF = "KMF"; - public static final String KPW = "KPW"; - public static final String KRW = "KRW"; - public static final String KWD = "KWD"; - public static final String KYD = "KYD"; - public static final String KZT = "KZT"; - public static final String LAK = "LAK"; - public static final String LBP = "LBP"; - public static final String LKR = "LKR"; - public static final String LRD = "LRD"; - public static final String LSL = "LSL"; - public static final String LTL = "LTL"; - public static final String LVL = "LVL"; - public static final String LYD = "LYD"; - public static final String MAD = "MAD"; - public static final String MDL = "MDL"; - public static final String MGA = "MGA"; - public static final String MKD = "MKD"; - public static final String MMK = "MMK"; - public static final String MNT = "MNT"; - public static final String MOP = "MOP"; - public static final String MRO = "MRO"; - public static final String MUR = "MUR"; - public static final String MVR = "MVR"; - public static final String MWK = "MWK"; - public static final String MXN = "MXN"; - public static final String MYR = "MYR"; - public static final String MZN = "MZN"; - public static final String NAD = "NAD"; - public static final String NGN = "NGN"; - public static final String NIO = "NIO"; - public static final String NIS = "NIS"; - public static final String NOK = "NOK"; - public static final String NPR = "NPR"; - public static final String NZD = "NZD"; - public static final String OMR = "OMR"; - public static final String PAB = "PAB"; - public static final String PEN = "PEN"; - public static final String PGK = "PGK"; - public static final String PHP = "PHP"; - public static final String PKR = "PKR"; - public static final String PLN = "PLN"; - public static final String PYG = "PYG"; - public static final String QAR = "QAR"; - public static final String RON = "RON"; - public static final String RSD = "RSD"; - public static final String RUB = "RUB"; - public static final String RUR = "RUR"; - public static final String RWF = "RWF"; - public static final String SAR = "SAR"; - public static final String SBD = "SBD"; - public static final String SCR = "SCR"; - public static final String SDG = "SDG"; - public static final String SEK = "SEK"; - public static final String SGD = "SGD"; - public static final String SHP = "SHP"; - public static final String SLL = "SLL"; - public static final String SOS = "SOS"; - public static final String SRD = "SRD"; - public static final String STD = "STD"; - public static final String SVC = "SVC"; - public static final String SYP = "SYP"; - public static final String SZL = "SZL"; - public static final String THB = "THB"; - public static final String TJS = "TJS"; - public static final String TMM = "TMM"; - public static final String TND = "TND"; - public static final String TOP = "TOP"; - public static final String TRY = "TRY"; - public static final String TTD = "TTD"; - public static final String TWD = "TWD"; - public static final String TZS = "TZS"; - public static final String UAH = "UAH"; - public static final String UGX = "UGX"; - public static final String USD = "USD"; - public static final String UYU = "UYU"; - public static final String UZS = "UZS"; - public static final String VEF = "VEF"; - public static final String VND = "VND"; - public static final String VUV = "VUV"; - public static final String WST = "WST"; - public static final String XAF = "XAF"; - public static final String XAG = "XAG"; - public static final String XAU = "XAU"; - public static final String XCD = "XCD"; - public static final String XOF = "XOF"; - public static final String XPF = "XPF"; - public static final String YER = "YER"; - public static final String ZAR = "ZAR"; - public static final String ZMK = "ZMK"; - public static final String ZWL = "ZWL"; - -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/CurrencySymbols.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/CurrencySymbols.java deleted file mode 100644 index 5b4375b1..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/CurrencySymbols.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.mobnetic.coinguardian.model.currency; - -import java.util.HashMap; - -public class CurrencySymbols { - - public final static HashMap CURRENCY_SYMBOLS = new HashMap(); - static { - CURRENCY_SYMBOLS.put(Currency.USD, "$"); - CURRENCY_SYMBOLS.put(Currency.PLN, "zÅ‚"); - CURRENCY_SYMBOLS.put(Currency.CNY, "Â¥"); - CURRENCY_SYMBOLS.put(Currency.EUR, "€"); -// CURRENCY_SYMBOLS.put(CAD, "$"); - CURRENCY_SYMBOLS.put(Currency.GBP, "£"); - CURRENCY_SYMBOLS.put(Currency.CHF, "Fr"); - CURRENCY_SYMBOLS.put(Currency.RUB, "Ñ€."); - CURRENCY_SYMBOLS.put(Currency.RUR, "Ñ€."); - CURRENCY_SYMBOLS.put(Currency.AUD, "$"); - CURRENCY_SYMBOLS.put(Currency.SEK, "kr"); - CURRENCY_SYMBOLS.put(Currency.DKK, "kr"); - CURRENCY_SYMBOLS.put(Currency.HKD, "$"); - CURRENCY_SYMBOLS.put(Currency.SGD, "$"); - CURRENCY_SYMBOLS.put(Currency.THB, "฿"); - CURRENCY_SYMBOLS.put(Currency.NZD, "$"); - CURRENCY_SYMBOLS.put(Currency.JPY, "Â¥"); - CURRENCY_SYMBOLS.put(Currency.BRL, "R$"); - CURRENCY_SYMBOLS.put(Currency.KRW, "â‚©"); - - CURRENCY_SYMBOLS.put(Currency.AFN, "Ø‹"); - CURRENCY_SYMBOLS.put(Currency.ALL, "L"); - CURRENCY_SYMBOLS.put(Currency.DZD, "د.ج"); - CURRENCY_SYMBOLS.put(Currency.AOA, "Kz"); - CURRENCY_SYMBOLS.put(Currency.ARS, "$"); - CURRENCY_SYMBOLS.put(Currency.AMD, "Õ¤Ö€."); - CURRENCY_SYMBOLS.put(Currency.AWG, "Æ’"); - CURRENCY_SYMBOLS.put(Currency.AZN, "m"); - CURRENCY_SYMBOLS.put(Currency.BSD, "$"); - CURRENCY_SYMBOLS.put(Currency.BHD, "ب.د"); - CURRENCY_SYMBOLS.put(Currency.BDT, "৳"); - CURRENCY_SYMBOLS.put(Currency.BBD, "$"); - CURRENCY_SYMBOLS.put(Currency.BYR, "Br"); - CURRENCY_SYMBOLS.put(Currency.BZD, "$"); - CURRENCY_SYMBOLS.put(Currency.BMD, "$"); - CURRENCY_SYMBOLS.put(Currency.BTN, "Nu."); - CURRENCY_SYMBOLS.put(Currency.BOB, "Bs."); - CURRENCY_SYMBOLS.put(Currency.BAM, "КМ"); - CURRENCY_SYMBOLS.put(Currency.BWP, "P"); - CURRENCY_SYMBOLS.put(Currency.BND, "$"); - CURRENCY_SYMBOLS.put(Currency.BGN, "лв"); - CURRENCY_SYMBOLS.put(Currency.BIF, "Fr"); - CURRENCY_SYMBOLS.put(Currency.TRY, "TL"); - CURRENCY_SYMBOLS.put(Currency.ZAR, "R"); - CURRENCY_SYMBOLS.put(Currency.IDR, "Rp"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/VirtualCurrency.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/VirtualCurrency.java deleted file mode 100644 index 0e665a3b..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/currency/VirtualCurrency.java +++ /dev/null @@ -1,374 +0,0 @@ -package com.mobnetic.coinguardian.model.currency; - -public class VirtualCurrency { - - public static final String _10_5 = "10-5"; - public static final String _21 = "21"; - public static final String _42 = "42"; - public static final String _66 = "66"; - public static final String _888 = "888"; - public static final String ADT = "ADT"; - public static final String AE = "AE"; - public static final String ALB = "ALB"; - public static final String ALF = "ALF"; - public static final String ALP = "ALP"; - public static final String ALT = "ALT"; - public static final String AMC = "AMC"; - public static final String ANC = "ANC"; - public static final String ANI = "ANI"; - public static final String ANT = "ANT"; - public static final String ARG = "ARG"; - public static final String ASC = "ASC"; - public static final String AUR = "AUR"; - public static final String BAT = "BAT"; - public static final String BC = "BC"; - public static final String BCC = "BCC"; - public static final String BCH = "BCH"; - public static final String BCU = "BCU"; - public static final String BCX = "BCX"; - public static final String BEE = "BEE"; - public static final String BEER = "BEER"; - public static final String BELA = "BELA"; - public static final String BELI = "BELI"; - public static final String BEN = "BEN"; - public static final String BET = "BET"; - public static final String BF1 = "BF1"; - public static final String BFX = "BFX"; - public static final String BIL = "BIL"; - public static final String BLA = "BLA"; - public static final String BLC = "BLC"; - public static final String BNB = "BNB"; - public static final String BQC = "BQC"; - public static final String BTB = "BTB"; - public static final String BTC = "BTC"; - public static final String mBTC = "mBTC"; - public static final String uBTC = "µBTC"; - public static final String Satoshi = "Satoshi"; - public static final String BTCS = "BTCS"; - public static final String BTE = "BTE"; - public static final String BTG = "BTG"; - public static final String BTP = "BTP"; - public static final String BTQ = "BTQ"; - public static final String BTR = "BTR"; - public static final String BUK = "BUK"; - public static final String BUR = "BUR"; - public static final String C2 = "C2"; - public static final String CACH = "CACH"; - public static final String CAGE = "CAGE"; - public static final String CAP = "CAP"; - public static final String CARB = "CARB"; - public static final String CASH = "CASH"; - public static final String CAT = "CAT"; - public static final String CDC = "CDC"; - public static final String CENT = "CENT"; - public static final String CGA = "CGA"; - public static final String CGB = "CGB"; - public static final String CIN = "CIN"; - public static final String CL = "CL"; - public static final String CLR = "CLR"; - public static final String CMC = "CMC"; - public static final String CMT = "CMT"; - public static final String CNC = "CNC"; - public static final String CNOTE = "CNOTE"; - public static final String COIN = "COIN"; - public static final String COINO = "COINO"; - public static final String COL = "COL"; - public static final String COLA = "COLA"; - public static final String CON = "CON"; - public static final String CORG = "CORG"; - public static final String CPR = "CPR"; - public static final String CR = "CR"; - public static final String CRA = "CRA"; - public static final String CRC = "CRC"; - public static final String CRD = "CRD"; - public static final String CREA = "CREA"; - public static final String CRN = "CRN"; - public static final String CRS = "CRS"; - public static final String CSC = "CSC"; - public static final String CTM = "CTM"; - public static final String DASH = "DASH"; - public static final String DBL = "DBL"; - public static final String DELTA = "DELTA"; - public static final String DEM = "DEM"; - public static final String DGB = "DGB"; - public static final String DGC = "DGC"; - public static final String DIME = "DIME"; - public static final String DMD = "DMD"; - public static final String DOG = "DOG"; - public static final String DOGE = "DOGE"; - public static final String DOPE = "DOPE"; - public static final String DRK = "DRK"; - public static final String DSH = "DSH"; // DASH - public static final String DTC = "DTC"; - public static final String DUCK = "DUCK"; - public static final String DVC = "DVC"; - public static final String EAC = "EAC"; - public static final String ECC = "ECC"; - public static final String ECN = "ECN"; - public static final String ELC = "ELC"; - public static final String ELP = "ELP"; - public static final String EMC2 = "EMC2"; - public static final String EMD = "EMD"; - public static final String EMO = "EMO"; - public static final String EOS = "EOS"; - public static final String ETC = "ETC"; - public static final String ETH = "ETH"; - public static final String ETOK = "ETOK"; - public static final String eTOK = "eTOK"; - public static final String EUC = "EUC"; - public static final String EXC = "EXC"; - public static final String EZC = "EZC"; - public static final String FCK = "FCK"; - public static final String FFC = "FFC"; - public static final String FLAP = "FLAP"; - public static final String FLO = "FLO"; - public static final String FLT = "FLT"; - public static final String FOX = "FOX"; - public static final String FRC = "FRC"; - public static final String FRK = "FRK"; - public static final String FRQ = "FRQ"; - public static final String FRY = "FRY"; - public static final String FRZ = "FRZ"; - public static final String FSC = "FSC"; - public static final String FSS = "FSS"; - public static final String FST = "FST"; - public static final String FTC = "FTC"; - public static final String FUNK = "FUNK"; - public static final String FZ = "FZ"; - public static final String GAME = "GAME"; - public static final String GDC = "GDC"; - public static final String GHS = "GHS"; - public static final String GLB = "GLB"; - public static final String GLC = "GLC"; - public static final String GLD = "GLD"; - public static final String GLX = "GLX"; - public static final String GME = "GME"; - public static final String GNT = "GNT"; - public static final String GOAT = "GOAT"; - public static final String GOX = "GOX"; - public static final String GPUC = "GPUC"; - public static final String GRC = "GRC"; - public static final String GRUMP = "GRUMP"; - public static final String HBN = "HBN"; - public static final String HEX = "HEX"; - public static final String HIRO = "HIRO"; - public static final String HRO = "HRO"; - public static final String HUC = "HUC"; - public static final String HVC = "HVC"; - public static final String HXC = "HXC"; - public static final String HYC = "HYC"; - public static final String I0C = "I0C"; - public static final String ICN = "ICN"; - public static final String IFC = "IFC"; - public static final String IND = "IND"; - public static final String IOST = "IOST"; - public static final String IOT = "IOT"; - public static final String IQD = "IQD"; - public static final String IXC = "IXC"; - public static final String JKC = "JKC"; - public static final String JRY = "JRY"; - public static final String KARM = "KARM"; - public static final String KCS = "KCS"; - 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"; - public static final String LBW = "LBW"; - public static final String LDC = "LDC"; - public static final String LEAF = "LEAF"; - public static final String LGBT = "LGBT"; - public static final String LGC = "LGC"; - public static final String LK7 = "LK7"; - public static final String LKY = "LKY"; - public static final String LMC = "LMC"; - public static final String LOT = "LOT"; - public static final String LSK = "LSK"; - public static final String LTB = "LTB"; - public static final String LTC = "LTC"; - public static final String mLTC = "mLTC"; - public static final String LYC = "LYC"; - public static final String MAX = "MAX"; - public static final String MCR = "MCR"; - public static final String MCX = "MCX"; - public static final String MEC = "MEC"; - public static final String MEM = "MEM"; - public static final String MEOW = "MEOW"; - public static final String MIM = "MIM"; - public static final String MINT = "MINT"; - public static final String MMC = "MMC"; - public static final String MNC = "MNC"; - public static final String MOON = "MOON"; - public static final String MRC = "MRC"; - public static final String MRS = "MRS"; - public static final String MRY = "MRY"; - public static final String MSC = "MSC"; - public static final String MST = "MST"; - public static final String MTC = "MTC"; - public static final String MTS = "MTS"; - public static final String MXB = "MXB"; - public static final String MXN = "MXN"; - public static final String MYMINER = "MYMINER"; - public static final String MYR = "MYR"; - public static final String MZC = "MZC"; - public static final String NAN = "NAN"; - public static final String NBL = "NBL"; - public static final String NCASH = "NCASH"; - public static final String NDL = "NDL"; - public static final String NEC = "NEC"; - public static final String NEO = "NEO"; - public static final String NET = "NET"; - public static final String NIB = "NIB"; - public static final String NKA = "NKA"; - public static final String NMC = "NMC"; - public static final String NOBL = "NOBL"; - public static final String NOTE = "NOTE"; - public static final String NRB = "NRB"; - public static final String NUC = "NUC"; - public static final String NVC = "NVC"; - public static final String NXT = "NXT"; - public static final String NYAN = "NYAN"; - public static final String OIL = "OIL"; - public static final String OLY = "OLY"; - public static final String OMG = "OMG"; - public static final String ORB = "ORB"; - public static final String ORG = "ORG"; - public static final String ORO = "ORO"; - public static final String OSC = "OSC"; - public static final String P$ = "P$"; - public static final String PAND = "PAND"; - public static final String PANDA = "PANDA"; - public static final String PCC = "PCC"; - public static final String PCN = "PCN"; - public static final String PENG = "PENG"; - public static final String PHI = "PHI"; - public static final String PHS = "PHS"; - public static final String PIC = "PIC"; - public static final String PLC = "PLC"; - public static final String PLT = "PLT"; - public static final String PMC = "PMC"; - public static final String PND = "PND"; - public static final String POD = "POD"; - public static final String POINTS = "POINTS"; - public static final String POT = "POT"; - public static final String PPC = "PPC"; - public static final String PRC = "PRC"; - public static final String PRT = "PRT"; - public static final String PT = "PT"; - public static final String PTC = "PTC"; - public static final String PTS = "PTS"; - public static final String PWC = "PWC"; - public static final String PWNY = "PWNY"; - public static final String PXC = "PXC"; - public static final String PXL = "PXL"; - public static final String PYC = "PYC"; - public static final String Q2C = "Q2C"; - public static final String QB = "QB"; - public static final String QRK = "QRK"; - public static final String QTUM = "QTUM"; - public static final String RAD = "RAD"; - public static final String RAIN = "RAIN"; - public static final String RBBT = "RBBT"; - public static final String RCH = "RCH"; - public static final String RDD = "RDD"; - public static final String REC = "REC"; - public static final String RED = "RED"; - public static final String REDD = "REDD"; // RDD - public static final String REP = "REP"; // RDD - public static final String RIC = "RIC"; - public static final String RON = "RON"; - public static final String RPC = "RPC"; - public static final String RPD = "RPD"; - public static final String RRT = "RRT"; - public static final String RSC = "RSC"; - public static final String RBY = "RBY"; - public static final String RYC = "RYC"; - public static final String SAN = "SAN"; - public static final String SAT = "SAT"; - public static final String SAV = "SAV"; - public static final String SBC = "SBC"; - public static final String SBX = "SBX"; - public static final String SC = "SC"; - public static final String SCO = "SCO"; - public static final String SMC = "SMC"; - public static final String SOC = "SOC"; - public static final String SOCHI = "SOCHI"; - public static final String SPA = "SPA"; - public static final String SPT = "SPT"; - public static final String SRC = "SRC"; - public static final String START = "START"; - public static final String STC = "STC"; - public static final String STL = "STL"; - public static final String STR = "STR"; - public static final String STY = "STY"; - public static final String SUN = "SUN"; - public static final String SXC = "SXC"; - public static final String SYN = "SYN"; - public static final String TAG = "TAG"; - public static final String TAK = "TAK"; - public static final String TEA = "TEA"; - public static final String TEK = "TEK"; - public static final String TEL = "TEL"; - public static final String TES = "TES"; - public static final String TFC = "TFC"; - public static final String TGC = "TGC"; - public static final String TH1 = "TH1"; - public static final String THOR = "THOR"; - public static final String TIPS = "TIPS"; - public static final String TIX = "TIX"; - public static final String TOP = "TOP"; - public static final String TRC = "TRC"; - public static final String TRL = "TRL"; - public static final String TRX = "TRX"; - public static final String TSL = "TSL"; - public static final String TTC = "TTC"; - public static final String TUSD = "TUSD"; - public static final String UFO = "UFO"; - public static final String UNC = "UNC"; - public static final String UNI = "UNI"; - public static final String UNO = "UNO"; - public static final String USDE = "USDE"; - public static final String USDe = "USDe"; - public static final String USDT = "USDT"; - public static final String UTC = "UTC"; - public static final String VDC = "VDC"; - public static final String VEN = "VEN"; - public static final String VGC = "VGC"; - public static final String VLC = "VLC"; - public static final String VLT = "VLT"; - public static final String VMP = "VMP"; - public static final String VOLT = "VOLT"; - public static final String VTC = "VTC"; - public static final String WDC = "WDC"; - public static final String WIKI = "WIKI"; - public static final String WOLF = "WOLF"; - public static final String XBT = "XBT"; // BTC - public static final String XCP = "XCP"; - public static final String XDG = "XDG"; // DOGE - public static final String XIV = "XIV"; - public static final String XJO = "XJO"; - public static final String XLM = "XLM"; - public static final String XMR = "XMR"; - public static final String XNC = "XNC"; - public static final String XPM = "XPM"; - public static final String XPY = "XPY"; - public static final String XRP = "XRP"; - public static final String XVN = "XVN"; // VEN - public static final String XXL = "XXL"; - public static final String YAC = "YAC"; - public static final String YANG = "YANG"; - public static final String YBC = "YBC"; - public static final String YIN = "YIN"; - public static final String ZCC = "ZCC"; - public static final String ZEC = "ZEC"; - public static final String ZED = "ZED"; - public static final String ZEIT = "ZEIT"; - public static final String ZET = "ZET"; - public static final String ZEU = "ZEU"; - public static final String ZIL = "ZIL"; - public static final String ZMB = "ZMB"; - public static final String ZRX = "ZRX"; - public static final String ZTC = "ZTC"; -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Abucoins.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Abucoins.java deleted file mode 100644 index 8f36a7e6..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Abucoins.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONArray; -import org.json.JSONObject; - -import java.util.List; - -public class Abucoins extends Market { - - private final static String NAME = "Abucoins"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.abucoins.com/products/%1$s/stats"; - private final static String URL_CURRENCY_PAIRS = "https://api.abucoins.com/products"; - - public Abucoins() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairs(int requestId, String responseString, List pairs) throws Exception { - final JSONArray jsonArray = new JSONArray(responseString); - for(int i=0; i pairs) throws Exception { - final JSONObject dataJsonObject = jsonObject.getJSONObject("data"); - - final JSONArray pairsJsonArray = dataJsonObject.names(); - for(int i=0; i pairs) throws Exception { - final JSONObject jsonObject = new JSONObject(responseString); - final JSONArray jsonSymbols = jsonObject.getJSONArray("symbols");; - - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap<>(); - - //GET https://bit2c.co.il/Exchanges/[BtcNis/EthNis/BchNis/LtcNis/EtcNis/BtgNis]/Ticker.json - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.NIS - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - Currency.NIS - }); - CURRENCY_PAIRS.put(VirtualCurrency.BCH, new String[]{ - Currency.NIS - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.NIS - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETC, new String[]{ - Currency.NIS - }); - CURRENCY_PAIRS.put(VirtualCurrency.BTG, new String[]{ - Currency.NIS - }); - } - - public Bit2c() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("h"); - ticker.ask = jsonObject.getDouble("l"); - ticker.vol = jsonObject.getDouble("a"); - ticker.last = jsonObject.getDouble("ll"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitBay.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitBay.java deleted file mode 100644 index 8b975818..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitBay.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class BitBay extends Market { - - private final static String NAME = "BitBay.net"; - private final static String TTS_NAME = "Bit Bay"; - private final static String URL = "https://bitbay.net/API/Public/%1$s%2$s/ticker.json"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BCC, new String[]{ - VirtualCurrency.BTC, - Currency.PLN, - Currency.USD, - Currency.EUR - }); - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.PLN, - Currency.USD, - Currency.EUR - }); - CURRENCY_PAIRS.put(VirtualCurrency.DASH, new String[]{ - VirtualCurrency.BTC, - Currency.PLN, - Currency.USD, - Currency.EUR - }); - CURRENCY_PAIRS.put(VirtualCurrency.GAME, new String[]{ - VirtualCurrency.BTC, - Currency.PLN, - Currency.USD, - Currency.EUR - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - VirtualCurrency.BTC, - Currency.PLN, - Currency.USD, - Currency.EUR - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - VirtualCurrency.BTC, - Currency.PLN, - Currency.USD, - Currency.EUR - }); - CURRENCY_PAIRS.put(VirtualCurrency.LSK, new String[]{ - VirtualCurrency.BTC, - Currency.PLN, - Currency.USD, - Currency.EUR - }); - } - - public BitBay() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("max"); - ticker.low = jsonObject.getDouble("min"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitFlyer.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitFlyer.java deleted file mode 100644 index 8b86f991..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitFlyer.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class BitFlyer extends Market { - - private final static String NAME = "bitFlyer"; - private final static String TTS_NAME = "bit flyer"; - private final static String URL = "https://api.bitflyer.jp/v1/ticker?product_code=%1$s_%2$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.JPY, - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - VirtualCurrency.BTC, - }); - } - - public BitFlyer() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("best_bid"); - ticker.ask = jsonObject.getDouble("best_ask"); - ticker.vol = jsonObject.getDouble("volume_by_product"); - ticker.last = jsonObject.getDouble("ltp"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitFlyerFX.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitFlyerFX.java deleted file mode 100644 index 29f64ed4..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitFlyerFX.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class BitFlyerFX extends Market { - - private final static String NAME = "bitFlyer FX"; - private final static String TTS_NAME = "bit flyer FX"; - private final static String URL = "https://api.bitflyer.jp/v1/ticker?product_code=FX_%1$s_%2$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.JPY, - }); - } - - public BitFlyerFX() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("best_bid"); - ticker.ask = jsonObject.getDouble("best_ask"); - ticker.vol = jsonObject.getDouble("volume_by_product"); - ticker.last = jsonObject.getDouble("ltp"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitKonan.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitKonan.java deleted file mode 100644 index f647ac0c..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitKonan.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class BitKonan extends Market { - - private final static String NAME = "BitKonan"; - private final static String TTS_NAME = "Bit Konan"; - private final static String URL_BTC = "https://bitkonan.com/api/ticker"; - private final static String URL_LTC = "https://bitkonan.com/api/ltc_ticker"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.USD - }); - } - - public BitKonan() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - if(VirtualCurrency.BTC.equals(checkerInfo.getCurrencyBase())) { - return URL_BTC; - } else { - return URL_LTC; - } - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitMEX.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitMEX.java deleted file mode 100644 index 95be04d9..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitMEX.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.text.SimpleDateFormat; -import java.util.List; -import java.util.Locale; -import java.util.TimeZone; - -import org.json.JSONArray; -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; - -public class BitMEX extends Market { - - private final static String NAME = "BitMEX"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://www.bitmex.com/api/v1/instrument" + - "?symbol=%1$s" + - "&columns=bidPrice,askPrice,turnover24h,highPrice,lowPrice,lastPrice"; - private final static String URL_CURRENCY_PAIRS = "https://www.bitmex.com/api/v1/instrument" + - "?columns=rootSymbol,typ" + - "&filter={\"state\":\"Open\"}"; - private final static SimpleDateFormat ISO_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH); - static { - ISO_DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT")); - } - - public BitMEX() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTicker(int requestId, String responseString, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - this.parseTickerFromJsonObject(requestId, new JSONArray(responseString).getJSONObject(0), ticker, checkerInfo); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bidPrice"); - ticker.ask = jsonObject.getDouble("askPrice"); - // This comes back in Satoshis - ticker.vol = jsonObject.getDouble("turnover24h") / 1e8; - if (!jsonObject.isNull("highPrice")) - ticker.high = jsonObject.getDouble("highPrice"); - if (!jsonObject.isNull("lowPrice")) - ticker.low = jsonObject.getDouble("lowPrice"); - ticker.last = jsonObject.getDouble("lastPrice"); - // This is an ISO timestamp representing UTC time - ticker.timestamp = ISO_DATE_FORMAT.parse(jsonObject.getString("timestamp")).getTime(); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairs(int requestId, String responseString, List pairs) throws Exception { - JSONArray instruments = new JSONArray(responseString); - for (int i = 0; i < instruments.length(); i++) { - this.parseCurrencyPairsFromJsonObject(requestId, instruments.getJSONObject(i), pairs); - } - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - String base = jsonObject.getString("rootSymbol"); - String id = jsonObject.getString("symbol"); - String quote = id.substring(id.indexOf(base) + base.length()); - - // Binary - if (jsonObject.getString("typ").equals("FFICSX")) { - quote = base; - base = "BINARY"; - } - - pairs.add(new CurrencyPairInfo(base, quote, id)); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitMaszyna.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitMaszyna.java deleted file mode 100644 index 4d701a0f..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitMaszyna.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class BitMaszyna extends Market { - - private final static String NAME = "BitMaszyna.pl"; - private final static String TTS_NAME = "Bit Maszyna"; - private final static String URL = "https://bitmaszyna.pl/api/%1$s%2$s/ticker.json"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.PLN - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.PLN - }); - } - - public BitMaszyna() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume1"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitTrex.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitTrex.java deleted file mode 100644 index fdb819db..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitTrex.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; - -import org.json.JSONArray; -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; - -public class BitTrex extends Market { - - private final static String NAME = "BitTrex"; - private final static String TTS_NAME = "Bit Trex"; - private final static String URL = "https://bittrex.com/api/v1.1/public/getticker?market=%1$s-%2$s"; - private final static String URL_CURRENCY_PAIRS = "https://bittrex.com/api/v1.1/public/getmarkets"; - - public BitTrex() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyCounter(), checkerInfo.getCurrencyBase()); // reversed - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject resultJsonObject = jsonObject.getJSONObject("result"); - ticker.bid = resultJsonObject.getDouble("Bid"); - ticker.ask = resultJsonObject.getDouble("Ask"); - ticker.last = resultJsonObject.getDouble("Last"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray resultJsonArray = jsonObject.getJSONArray("result"); - - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.IDR, - Currency.SGD, - Currency.MYR, - Currency.NGN, - Currency.ZAR - }); - } - - public BitX() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - final String pairString; - if(checkerInfo.getCurrencyPairId()==null) { - pairString = String.format("%1$s%2$s", fixCurrency(checkerInfo.getCurrencyBase()), fixCurrency(checkerInfo.getCurrencyCounter())); - } else { - pairString = checkerInfo.getCurrencyPairId(); - } - return String.format(URL, pairString); - } - - private String fixCurrency(String currency) { - if(VirtualCurrency.BTC.equals(currency)) { - return VirtualCurrency.XBT; - } else if(VirtualCurrency.XBT.equals(currency)) { - return VirtualCurrency.BTC; - } - - return currency; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("rolling_24_hour_volume"); - ticker.last = jsonObject.getDouble("last_trade"); - ticker.timestamp = jsonObject.getLong("timestamp"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray dataJsonArray = jsonObject.getJSONArray("tickers"); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.EUR - }); - } - - public BitcoinCentralNet() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("price"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinCoId.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinCoId.java deleted file mode 100644 index 8ac688d6..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinCoId.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; -import java.util.Locale; - -import org.json.JSONArray; -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; - -public class BitcoinCoId extends Market { - - private final static String NAME = "Bitcoin.co.id"; - private final static String TTS_NAME = "Bitcoin co id"; - private final static String URL = "https://vip.bitcoin.co.id/api/%1$s/ticker/"; - private final static String URL_CURRENCY_PAIRS = "https://vip.bitcoin.co.id/api/summaries"; - - public BitcoinCoId() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - String pairId = checkerInfo.getCurrencyPairId(); - if (pairId == null) { - pairId = String.format("%1$s_%2$s", checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - return String.format(URL, pairId); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject tickerJsonObject = jsonObject.getJSONObject("ticker"); - ticker.bid = tickerJsonObject.getDouble("buy"); - ticker.ask = tickerJsonObject.getDouble("sell"); - ticker.vol = tickerJsonObject.getDouble("vol_" + checkerInfo.getCurrencyBaseLowerCase()); - ticker.high = tickerJsonObject.getDouble("high"); - ticker.low = tickerJsonObject.getDouble("low"); - ticker.last = tickerJsonObject.getDouble("last"); - ticker.timestamp = tickerJsonObject.getLong("server_time"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONObject tickersJsonObject = jsonObject.getJSONObject("tickers"); - final JSONArray tickerNamesArray = tickersJsonObject.names(); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.BRL - }); - } - - public BitcoinToYou() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { -/* - String pairId = checkerInfo.getCurrencyPairId(); - if (pairId == null) { - pairId = String.format("%1$s_%2$s", checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - */ - String result = String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - return result; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject tickerJsonObject = jsonObject.getJSONObject("summary"); -// ticker.bid = tickerJsonObject.getDouble("buy"); -// ticker.ask = tickerJsonObject.getDouble("sell"); - ticker.vol = tickerJsonObject.getDouble("amount"); - ticker.high = tickerJsonObject.getDouble("high"); - ticker.low = tickerJsonObject.getDouble("low"); - ticker.last = tickerJsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinTrade.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinTrade.java deleted file mode 100644 index d0fe633c..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinTrade.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class BitcoinTrade extends Market { - - private final static String NAME = "BitcoinTrade"; - private final static String TTS_NAME = "Bitcoin Trade"; - private final static String URL = "https://api.bitcointrade.com.br/v3/public/%1$s%2$s/ticker"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.BRL - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - Currency.BRL - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.BRL - }); - } - - public BitcoinTrade() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyCounter(), checkerInfo.getCurrencyBase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject dataJsonObject = jsonObject.getJSONObject("data"); - - ticker.bid = dataJsonObject.getDouble("buy"); - ticker.ask = dataJsonObject.getDouble("sell"); - ticker.vol = dataJsonObject.getDouble("volume"); - ticker.high = dataJsonObject.getDouble("high"); - ticker.low = dataJsonObject.getDouble("low"); - ticker.last = dataJsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinVenezuela.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinVenezuela.java deleted file mode 100644 index e195fcec..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitcoinVenezuela.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; - -import org.json.JSONArray; -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.model.currency.VirtualCurrency; - -public class BitcoinVenezuela extends Market { - - private final static String NAME = "BitcoinVenezuela"; - private final static String TTS_NAME = "Bitcoin Venezuela"; - private final static String URL = "https://api.bitcoinvenezuela.com/?html=no¤cy=%1$s&amount=1&to=%2$s"; - private final static String URL_CURRENCY_PAIRS = "https://api.bitcoinvenezuela.com/"; - - public BitcoinVenezuela() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTicker(int requestId, String responseString, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.last = Double.parseDouble(responseString.trim()); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - parseCurrencyPairsFromCurrencyBase(VirtualCurrency.BTC, jsonObject, pairs); - parseCurrencyPairsFromCurrencyBase(VirtualCurrency.LTC, jsonObject, pairs); - parseCurrencyPairsFromCurrencyBase(VirtualCurrency.MSC, jsonObject, pairs); - } - - private void parseCurrencyPairsFromCurrencyBase(String currencyBase, JSONObject jsonObject, List pairs) throws Exception { - if(!jsonObject.has(currencyBase)) - return; - - final JSONObject currencyBaseJsonObject = jsonObject.getJSONObject(currencyBase); - final JSONArray counterCurrencyNames = currencyBaseJsonObject.names(); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD - }); - } - - public BitexLa() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bitfinex.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bitfinex.java deleted file mode 100644 index 8ed7ae39..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bitfinex.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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.model.currency.Currency; -import com.mobnetic.coinguardian.model.currency.VirtualCurrency; -import com.mobnetic.coinguardian.util.ParseUtils; -import com.mobnetic.coinguardian.util.TimeUtils; - -import org.json.JSONArray; -import org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Locale; - -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-pub.bitfinex.com/v2/ticker/%1$s"; - private final static String URL_CURRENCY_PAIRS = "https://api-pub.bitfinex.com/v2/tickers?symbols=ALL"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BCC, new String[]{ - VirtualCurrency.BTC, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.BCH, new String[]{ - VirtualCurrency.BTC, - VirtualCurrency.ETH, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.BCU, new String[]{ - VirtualCurrency.BTC, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.DSH, new String[]{ - VirtualCurrency.BTC, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.EOS, new String[]{ - VirtualCurrency.BTC, - VirtualCurrency.ETH, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETC, new String[]{ - VirtualCurrency.BTC, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - VirtualCurrency.BTC, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.IOT, new String[]{ - VirtualCurrency.BTC, - VirtualCurrency.ETH, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - VirtualCurrency.BTC, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.OMG, new String[]{ - VirtualCurrency.BTC, - VirtualCurrency.ETH, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.RRT, new String[]{ - VirtualCurrency.BTC, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.SAN, new String[]{ - VirtualCurrency.BTC, - VirtualCurrency.ETH, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.XMR, new String[]{ - VirtualCurrency.BTC, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.XRP, new String[]{ - VirtualCurrency.BTC, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.ZEC, new String[]{ - VirtualCurrency.BTC, - Currency.USD - }); - } - - public Bitfinex() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - String pairId = checkerInfo.getCurrencyPairId(); - if (pairId == null) { - pairId = String.format("%1$s%2$s", - checkerInfo.getCurrencyBaseLowerCase(), - checkerInfo.getCurrencyCounterLowerCase()); - } - return String.format(URL, pairId); - } - - @Override - protected void parseTicker(int requestId, String responseString, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - JSONArray jsonArray = new JSONArray(responseString); - ticker.bid = jsonArray.getDouble(0); - ticker.ask = jsonArray.getDouble(2); - ticker.last = jsonArray.getDouble(6); - ticker.vol = jsonArray.getDouble(7); - ticker.high = jsonArray.getDouble(8); - ticker.low = jsonArray.getDouble(9); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairs(int requestId, String responseString, List pairs) throws Exception { - final JSONArray pairsArray = new JSONArray(responseString); - for (int i = 0; i < pairsArray.length(); ++i) { - final JSONArray pairArray = pairsArray.getJSONArray(i); - final String pairId = pairArray.getString(0); - if (pairId != null && pairId.length() == 7) { - // pairId example "tBTCUSD" - pairs.add(new CurrencyPairInfo( - pairId.substring(1, 4).toUpperCase(Locale.US), - pairId.substring(4).toUpperCase(Locale.US), - pairId)); - } - } - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bithumb.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bithumb.java deleted file mode 100644 index b5e52931..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bithumb.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONArray; -import org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class Bithumb extends Market { - - private final static String NAME = "Bithumb"; - private final static String TTS_NAME = NAME; - private final static String URL_TICKER = "https://api.bithumb.com/public/ticker/%1$s"; - private final static String URL_ORDERS = "https://api.bithumb.com/public/orderbook/%1$s?count=1"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETC, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.DASH, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.XRP, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.BCH, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.XMR, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.ZEC, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.QTUM, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.CON, new String[]{ - Currency.KRW - }); - } - - public Bithumb() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public int getNumOfRequests(CheckerInfo checkerRecord) { - return 2; - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - if (requestId == 0) { - return String.format(URL_TICKER, checkerInfo.getCurrencyBaseLowerCase()); - } else { - return String.format(URL_ORDERS, checkerInfo.getCurrencyBaseLowerCase()); - } - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, - CheckerInfo checkerInfo) throws Exception { - JSONObject dataObject = jsonObject.getJSONObject("data"); - - if (requestId == 0) { - ticker.vol = dataObject.getDouble("units_traded_24H"); - ticker.high = dataObject.getDouble("max_price"); - ticker.low = dataObject.getDouble("min_price"); - ticker.last = dataObject.getDouble("closing_price"); - ticker.timestamp = dataObject.getLong("date"); - } else { - ticker.bid = getFirstPriceFromOrder(dataObject, "bids"); - ticker.ask = getFirstPriceFromOrder(dataObject, "asks"); - } - } - - @Override - protected String parseErrorFromJsonObject(int requestId, JSONObject jsonObject, - CheckerInfo checkerInfo) throws Exception { - return jsonObject.getString("message"); - } - - private double getFirstPriceFromOrder(JSONObject jsonObject, String key) throws Exception { - JSONArray array = jsonObject.getJSONArray(key); - - if (array.length() == 0) { - return Ticker.NO_DATA; - } - - JSONObject first = array.getJSONObject(0); - return first.getDouble("price"); - } -} \ No newline at end of file diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitoEX.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitoEX.java deleted file mode 100644 index 79411d24..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitoEX.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -import org.json.JSONArray; - -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; - -public class BitoEX extends Market { - - private final static String NAME = "BitoEX"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://www.bitoex.com/sync/dashboard/%1$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.TWD - }); - } - - public BitoEX() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, System.currentTimeMillis()); - } - - @Override - protected void parseTicker(int requestId, String responseString, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - JSONArray jsonArray = new JSONArray(responseString); - ticker.ask = Double.parseDouble(jsonArray.getString(0).replaceAll(",", "")); - ticker.bid = Double.parseDouble(jsonArray.getString(1).replaceAll(",", "")); - ticker.last = ticker.ask; - ticker.timestamp = Long.valueOf(jsonArray.getString(2)); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bitorado.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bitorado.java deleted file mode 100644 index 7ea09298..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bitorado.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; - -import org.json.JSONArray; -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; - -public class Bitorado extends Market -{ - private final static String NAME = "Bitorado"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://www.bitorado.com/api/market/%1$s-%2$s/ticker"; - private final static String URL_CURRENCY_PAIRS = "https://www.bitorado.com/api/ticker"; - - public Bitorado() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject resultObject = jsonObject.getJSONObject("result"); - ticker.bid = resultObject.optDouble("buy", Ticker.NO_DATA); - ticker.ask = resultObject.optDouble("sell", Ticker.NO_DATA); - ticker.vol = resultObject.optDouble("vol", Ticker.NO_DATA); - ticker.high = resultObject.optDouble("high", Ticker.NO_DATA); - ticker.low = resultObject.optDouble("low", Ticker.NO_DATA); - ticker.last = resultObject.optDouble("last", 0); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONObject result = jsonObject.getJSONObject("result"); - final JSONObject markets = result.getJSONObject("markets"); - final JSONArray pairNames = markets.names(); - - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap<>(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.MXN - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - VirtualCurrency.BTC, - Currency.MXN - }); - CURRENCY_PAIRS.put(VirtualCurrency.XRP, new String[]{ - VirtualCurrency.BTC, - Currency.MXN - }); - CURRENCY_PAIRS.put(VirtualCurrency.BCH, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - VirtualCurrency.BTC, - Currency.MXN - }); - } - - public Bitso() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - String pairId = checkerInfo.getCurrencyPairId(); - if (pairId == null) { - pairId = checkerInfo.getCurrencyBaseLowerCase()+"_"+checkerInfo.getCurrencyCounterLowerCase(); - } - final JSONObject pairJsonObject = jsonObject.getJSONObject(pairId); - ticker.bid = ParseUtils.getDoubleFromString(pairJsonObject, "buy"); - ticker.ask = ParseUtils.getDoubleFromString(pairJsonObject, "sell"); - ticker.vol = ParseUtils.getDoubleFromString(pairJsonObject, "volume"); - ticker.last = ParseUtils.getDoubleFromString(pairJsonObject, "rate"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray pairIds = jsonObject.names(); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.EUR, - Currency.USD, - Currency.GBP - }); - CURRENCY_PAIRS.put(VirtualCurrency.BCH, new String[]{ - VirtualCurrency.BTC, - Currency.EUR, - Currency.USD, - Currency.GBP - }); - CURRENCY_PAIRS.put(Currency.EUR, new String[]{ - Currency.USD, - Currency.GBP - }); - CURRENCY_PAIRS.put(Currency.GBP, new String[]{ - Currency.EUR, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - VirtualCurrency.BTC, - Currency.EUR, - Currency.USD, - Currency.GBP - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - VirtualCurrency.BTC, - Currency.EUR, - Currency.USD, - Currency.GBP - }); - CURRENCY_PAIRS.put(VirtualCurrency.XLM, new String[]{ - VirtualCurrency.BTC, - Currency.EUR, - Currency.USD, - Currency.GBP - }); - CURRENCY_PAIRS.put(VirtualCurrency.XRP, new String[]{ - VirtualCurrency.BTC, - Currency.EUR, - Currency.USD, - Currency.GBP - }); - } - - public Bitstamp() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - ticker.timestamp = jsonObject.getLong("timestamp"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitxCom.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitxCom.java deleted file mode 100644 index 52ba54b0..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BitxCom.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class BitxCom extends Market { - - private final static String NAME = "CoinsBank"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://coinsbank.com/api/public/ticker?pair=%1$s%2$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.EUR, - Currency.GBP, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - VirtualCurrency.BTC, - Currency.EUR, - Currency.GBP, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.GHS, new String[]{ - VirtualCurrency.BTC, - Currency.EUR, - Currency.GBP, - VirtualCurrency.LTC, - Currency.USD - }); - CURRENCY_PAIRS.put(Currency.EUR, new String[]{ - Currency.GBP, - Currency.USD - }); - CURRENCY_PAIRS.put(Currency.GBP, new String[]{ - Currency.USD - }); - } - - public BitxCom() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject dataJsonObject = jsonObject.getJSONObject("data"); - ticker.bid = dataJsonObject.getDouble("buy"); - ticker.ask = dataJsonObject.getDouble("sell"); - ticker.vol = dataJsonObject.getDouble("volume"); - ticker.high = dataJsonObject.getDouble("high"); - ticker.low = dataJsonObject.getDouble("low"); - ticker.last = dataJsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bl3p.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bl3p.java deleted file mode 100644 index c091f4e1..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bl3p.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class Bl3p extends Market { - - private final static String NAME = "BL3P"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.bl3p.eu/1/%1$s%2$s/ticker"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.EUR - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.EUR - }); - } - - public Bl3p() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getJSONObject("volume").getDouble("24h"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - ticker.timestamp = jsonObject.getLong("timestamp"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bleutrade.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bleutrade.java deleted file mode 100644 index 8dd2a727..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bleutrade.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; - -import org.json.JSONArray; -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; - -public class Bleutrade extends Market { - - private final static String NAME = "Bleutrade"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://bleutrade.com/api/v2/public/getticker?market=%1$s"; - private final static String URL_CURRENCY_PAIRS = "https://bleutrade.com/api/v2/public/getmarkets"; - - public Bleutrade() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final Object resultObject = jsonObject.get("result"); - JSONObject resultsJsonObject = null; - if (resultObject instanceof JSONArray) { - resultsJsonObject = ((JSONArray)resultObject).getJSONObject(0); - } else { - resultsJsonObject = (JSONObject)resultObject; - } - ticker.bid = resultsJsonObject.getDouble("Bid"); - ticker.ask = resultsJsonObject.getDouble("Ask"); - ticker.last = resultsJsonObject.getDouble("Last"); - } - - @Override - protected String parseErrorFromJsonObject(int requestId, JSONObject jsonObject, CheckerInfo checkerInfo) throws Exception { - return jsonObject.getString("message"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray resultsJsonArray = jsonObject.getJSONArray("result"); - for (int i = 0; i < resultsJsonArray.length(); ++i) { - final JSONObject pairJsonObject = resultsJsonArray.getJSONObject(i); - final String pairId = pairJsonObject.getString("MarketName"); - final String currencyBase = pairJsonObject.getString("MarketCurrency"); - final String currencyCounter = pairJsonObject.getString("BaseCurrency"); - if (pairId != null && currencyBase != null && currencyCounter != null) { - pairs.add(new CurrencyPairInfo( - currencyBase, - currencyCounter, - pairId - )); - } - } - } -} \ No newline at end of file diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BlinkTrade.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BlinkTrade.java deleted file mode 100644 index db71d470..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BlinkTrade.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Author: Jorge Pereira - * Date: Fri Dec 8 15:07:27 -02 2017 - * Desc: Blinktrade market - */ -package com.mobnetic.coinguardian.model.market; - -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; - -public class BlinkTrade extends Market { - - private final static String NAME = "BlinkTrade"; - private final static String TTS_NAME = "Blink Trade"; - private final static String URL = "https://bitcambioapi.blinktrade.com/api/v1/%2$s/ticker?crypto_currency=%1$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.BRL - }); - } - - public BlinkTrade() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("buy"); - ticker.ask = jsonObject.getDouble("sell"); - ticker.vol = jsonObject.getDouble("vol"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Braziliex.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Braziliex.java deleted file mode 100644 index 27419b51..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Braziliex.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONArray; -import org.json.JSONObject; - -import java.util.List; -import java.util.Locale; - -public class Braziliex extends Market { - - private final static String NAME = "Braziliex"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://braziliex.com/api/v1/public/ticker/%1$s"; - private final static String URL_CURRENCY_PAIRS = "https://braziliex.com/api/v1/public/ticker"; - - public Braziliex() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("highestBid"); - ticker.ask = jsonObject.getDouble("lowestAsk"); - ticker.vol = jsonObject.getDouble("baseVolume24"); - ticker.high = jsonObject.getDouble("highestBid24"); - ticker.low = jsonObject.getDouble("lowestAsk24"); - ticker.last = jsonObject.getDouble("last"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray pairIds = jsonObject.names(); - for(int i=0; i pairs) throws Exception { - final String currencyCounter = getCurrencyCounter(requestId); - final JSONArray currencyBaseList = jsonObject.names(); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.JPY - }); - } - - public BtcBox() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("buy"); - ticker.ask = jsonObject.getDouble("sell"); - ticker.vol = jsonObject.getDouble("vol"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BtcMarkets.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BtcMarkets.java deleted file mode 100644 index ef459cc0..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BtcMarkets.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class BtcMarkets extends Market { - - private final static String NAME = "BtcMarkets.net"; - private final static String TTS_NAME = "BTC Markets net"; - private final static String URL = "https://api.btcmarkets.net/market/%1$s/%2$s/tick"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.AUD - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - VirtualCurrency.BTC, - Currency.AUD - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETC, new String[]{ - VirtualCurrency.BTC, - Currency.AUD - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - VirtualCurrency.BTC, - Currency.AUD - }); - CURRENCY_PAIRS.put(VirtualCurrency.XRP, new String[]{ - VirtualCurrency.BTC, - Currency.AUD - }); - CURRENCY_PAIRS.put(VirtualCurrency.BCH, new String[]{ - VirtualCurrency.BTC, - Currency.AUD - }); - } - - public BtcMarkets() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bestBid"); - ticker.ask = jsonObject.getDouble("bestAsk"); - ticker.last = jsonObject.getDouble("lastPrice"); - ticker.timestamp = jsonObject.getLong("timestamp"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BtcXIndia.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BtcXIndia.java deleted file mode 100644 index 8d960d62..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/BtcXIndia.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class BtcXIndia extends Market { - - private final static String NAME = "BTCXIndia"; - private final static String TTS_NAME = "BTC X India"; - private final static String URL = "https://api.btcxindia.com/ticker"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.XRP, new String[]{ - Currency.INR - }); - } - - public BtcXIndia() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("total_volume_24h"); - ticker.high = ParseUtils.getDoubleFromString(jsonObject, "high"); - ticker.low = ParseUtils.getDoubleFromString(jsonObject, "low"); - ticker.last = jsonObject.getDouble("last_traded_price"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Btcturk.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Btcturk.java deleted file mode 100644 index 345e9434..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Btcturk.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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.TimeUtils; - -import org.json.JSONArray; -import org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class Btcturk extends Market { - - private final static String NAME = "BtcTurk"; - private final static String TTS_NAME = "Btc Turk"; - private final static String URL = "https://www.btcturk.com/api/ticker"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.TRY - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - VirtualCurrency.BTC, - Currency.TRY - }); - } - - public Btcturk() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTicker(int requestId, String responseString, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONArray tickerJsonArray = new JSONArray(responseString); - final String pairId = checkerInfo.getCurrencyBase()+checkerInfo.getCurrencyCounter(); - for (int i = 0; i < tickerJsonArray.length(); ++i) { - final JSONObject tickerJsonObject = tickerJsonArray.getJSONObject(i); - if (pairId.equals(tickerJsonObject.getString("pair"))) { - ticker.bid = tickerJsonObject.getDouble("bid"); - ticker.ask = tickerJsonObject.getDouble("ask"); - ticker.vol = tickerJsonObject.getDouble("volume"); - ticker.high = tickerJsonObject.getDouble("high"); - ticker.low = tickerJsonObject.getDouble("low"); - ticker.last = tickerJsonObject.getDouble("last"); - ticker.timestamp = (long) (tickerJsonObject.getDouble("timestamp") * TimeUtils.MILLIS_IN_SECOND); - break; - } - } - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bter.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bter.java deleted file mode 100644 index e34ddc01..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Bter.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; -import java.util.Locale; - -import org.json.JSONArray; -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; - -public class Bter extends Market { - - private final static String NAME = "Gate.io"; - private final static String TTS_NAME = "Gate io"; - private final static String URL = "http://data.gate.io/api2/1/ticker/%1$s_%2$s"; - private final static String URL_CURRENCY_PAIRS = "http://data.gate.io/api2/1/pairs"; - - public Bter() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("highestBid"); - ticker.ask = jsonObject.getDouble("lowestAsk"); - ticker.vol = jsonObject.getDouble("quoteVolume"); - ticker.high = jsonObject.getDouble("high24hr"); - ticker.low = jsonObject.getDouble("low24hr"); - ticker.last = jsonObject.getDouble("last"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairs(int requestId, String responseString, List pairs) throws Exception { - JSONArray jsonArray = new JSONArray(responseString); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD - }); - } - - public Buttercoin() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CCex.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CCex.java deleted file mode 100644 index af288556..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CCex.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; -import java.util.Locale; - -import org.json.JSONArray; -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; - -public class CCex extends Market { - - public final static String NAME = "C-CEX"; - public final static String TTS_NAME = "C-Cex"; - public final static String URL = "https://c-cex.com/t/%1$s-%2$s.json"; - public final static String URL_CURRENCY_PAIRS = "https://c-cex.com/t/pairs.json"; - - public CCex() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - JSONObject tickerObject = jsonObject.getJSONObject("ticker"); - - ticker.bid = tickerObject.getDouble("buy"); - ticker.ask = tickerObject.getDouble("sell"); - ticker.high = tickerObject.getDouble("high"); - ticker.low = tickerObject.getDouble("low"); - ticker.last = tickerObject.getDouble("lastprice"); -// ticker.timestamp = tickerObject.getLong("updated"); // strange date? - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray pairsJsonArray = jsonObject.getJSONArray("pairs"); - - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD - }); - } - - public Campbx() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("Best Bid"); - ticker.ask = jsonObject.getDouble("Best Ask"); - ticker.last = jsonObject.getDouble("Last Trade"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CexIO.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CexIO.java deleted file mode 100644 index 6c6d59c5..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CexIO.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; - -import org.json.JSONArray; -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.model.currency.Currency; -import com.mobnetic.coinguardian.model.currency.VirtualCurrency; - -public class CexIO extends Market { - - private final static String NAME = "CEX.IO"; - private final static String TTS_NAME = "CEX IO"; - private final static String URL = "https://cex.io/api/ticker/%1$s/%2$s"; - private final static String URL_CURRENCY_PAIRS = "https://cex.io/api/currency_limits"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD, - Currency.EUR, - Currency.GBP, - Currency.RUB, - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.GHS, new String[]{ - VirtualCurrency.BTC, - }); - } - - public CexIO() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - if (jsonObject.has("bid")) { - ticker.bid = jsonObject.getDouble("bid"); - } - if (jsonObject.has("ask")) { - ticker.ask = jsonObject.getDouble("ask"); - } - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONObject dataJsonObject = jsonObject.getJSONObject("data"); - final JSONArray pairsJsonArray = dataJsonObject.getJSONArray("pairs"); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.CLP - }); - } - - public ChileBit() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("buy"); - ticker.ask = jsonObject.getDouble("sell"); - ticker.vol = jsonObject.getDouble("vol"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CleverCoin.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CleverCoin.java deleted file mode 100644 index f1e7c59d..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CleverCoin.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class CleverCoin extends Market { - - private final static String NAME = "CleverCoin"; - private final static String TTS_NAME = "Clever Coin"; - private final static String URL = "https://api.clevercoin.com/v1/ticker"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.EUR - }); - } - - public CleverCoin() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - ticker.timestamp = jsonObject.getLong("timestamp"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinDesk.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinDesk.java deleted file mode 100644 index fdf5c6c9..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinDesk.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; - -import org.json.JSONArray; -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.model.currency.VirtualCurrency; - -public class CoinDesk extends Market { - - private final static String NAME = "CoinDesk"; - private final static String TTS_NAME = "Coin Desk"; - private final static String URL = "https://api.coindesk.com/v1/bpi/currentprice.json"; - private final static String URL_CURRENCY_PAIRS = URL; - - public CoinDesk() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject bpiJsonObject = jsonObject.getJSONObject("bpi"); - final JSONObject pairJsonObject = bpiJsonObject.getJSONObject(checkerInfo.getCurrencyCounter()); - ticker.last = pairJsonObject.getDouble("rate_float"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONObject bpiJsonObject = jsonObject.getJSONObject("bpi"); - final JSONArray currencyCounterNames = bpiJsonObject.names(); - - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.XBT, new String[]{ - Currency.GBP, - Currency.EUR, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.BCH, new String[]{ - Currency.GBP - }); - } - - public CoinFloor() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinJar.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinJar.java deleted file mode 100644 index 2e13a60f..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinJar.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONArray; -import org.json.JSONObject; - -import java.util.List; - -public class CoinJar extends Market { - - private final static String NAME = "CoinJar"; - private final static String TTS_NAME = "Coin Jar"; - private final static String URL = "https://api.coinjar.com/v3/exchange_rates"; - private final static String URL_CURRENCY_PAIRS = URL; - - public CoinJar() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject ratesJsonObject = jsonObject.getJSONObject("exchange_rates"); - final JSONObject pairJsonObject = ratesJsonObject.getJSONObject(checkerInfo.getCurrencyPairId()); - ticker.bid = pairJsonObject.getDouble("bid"); - ticker.ask = pairJsonObject.getDouble("ask"); - ticker.last = pairJsonObject.getDouble("midpoint"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONObject ratesJsonObject = jsonObject.getJSONObject("exchange_rates"); - final JSONArray namesJsonArray = ratesJsonObject.names(); - - for(int i=0; i< namesJsonArray.length(); ++i) { - final String symbol = namesJsonArray.getString(i); - final JSONObject pairJsonObject = ratesJsonObject.getJSONObject(symbol); - pairs.add(new CurrencyPairInfo( - pairJsonObject.getString("base_currency"), - pairJsonObject.getString("counter_currency"), - symbol - )); - } - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinMarketIO.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinMarketIO.java deleted file mode 100644 index e42f1fa7..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinMarketIO.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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.VirtualCurrency; - -public class CoinMarketIO extends Market { - - private final static String NAME = "CoinMarket.io"; - private final static String TTS_NAME = "Coin Market IO"; - private final static String URL = "https://coinmarket.io/ticker/%1$s%2$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.LEAF, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.USDE, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.DGB, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.KDC, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.CON, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.NOBL, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.SMC, new String[]{ - VirtualCurrency.BTC - }); -// CURRENCY_PAIRS.put(VirtualCurrency.PRT, new String[]{ -// VirtualCurrency.BTC -// }); - CURRENCY_PAIRS.put(VirtualCurrency.VTC, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.UTC, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.KARM, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.RDD, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.RPD, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.ICN, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.PENG, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.MINT, new String[]{ - VirtualCurrency.BTC - }); - } - - public CoinMarketIO() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.vol = jsonObject.getDouble("volume24"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinMateIO.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinMateIO.java deleted file mode 100644 index d6c01f11..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinMateIO.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class CoinMateIO extends Market { - - private final static String NAME = "CoinMate.io"; - private final static String TTS_NAME = "Coin Mate"; - private final static String URL = "https://coinmate.io/api/ticker?currencyPair=%1$s_%2$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.EUR, - Currency.CZK - }); - } - - public CoinMateIO() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject dataJsonObject = jsonObject.getJSONObject("data"); - ticker.bid = dataJsonObject.getDouble("bid"); - ticker.ask = dataJsonObject.getDouble("ask"); - ticker.vol = dataJsonObject.getDouble("amount"); - ticker.high = dataJsonObject.getDouble("high"); - ticker.low = dataJsonObject.getDouble("low"); - ticker.last = dataJsonObject.getDouble("last"); - } - - @Override - protected String parseErrorFromJsonObject(int requestId, JSONObject jsonObject, CheckerInfo checkerInfo) throws Exception { - return jsonObject.getString("errorMessage"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinSecure.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinSecure.java deleted file mode 100644 index 769aadeb..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinSecure.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class CoinSecure extends Market { - - private final static String NAME = "CoinSecure"; - private final static String TTS_NAME = "Coin Secure"; - private final static String URL = "https://api.coinsecure.in/v1/exchange/ticker"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.INR - }); - } - - public CoinSecure() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject messageJsonObject = jsonObject.getJSONObject("message"); - ticker.bid = parsePrice(messageJsonObject.getDouble("bid")); - ticker.ask = parsePrice(messageJsonObject.getDouble("ask")); - ticker.vol = messageJsonObject.getDouble("coinvolume") / 100000000; - ticker.high = parsePrice(messageJsonObject.getDouble("high")); - ticker.low = parsePrice(messageJsonObject.getDouble("low")); - ticker.last = parsePrice(messageJsonObject.getDouble("lastPrice")); -// ticker.timestamp = messageJsonObject.getLong("timestamp"); - } - - private double parsePrice(double price) { - return price/100; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinSwap.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinSwap.java deleted file mode 100644 index 87675fb6..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinSwap.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; - -import org.json.JSONArray; -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; - -public class CoinSwap extends Market { - - private final static String NAME = "Coin-Swap"; - private final static String TTS_NAME = "Coin Swap"; - private final static String URL = "https://api.coin-swap.net/market/stats/%1$s/%2$s"; - private final static String URL_CURRENCY_PAIRS = "http://api.coin-swap.net/market/summary"; - - public CoinSwap() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("dayvolume"); - ticker.high = jsonObject.getDouble("dayhigh"); - ticker.low = jsonObject.getDouble("daylow"); - ticker.last = jsonObject.getDouble("lastprice"); - } - - // ==================== - // Get currency pairs - // ==================== - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - protected void parseCurrencyPairs(int requestId, String responseString, List pairs) throws Exception { - final JSONArray marketsJsonArray = new JSONArray(responseString); - - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD, - Currency.CAD - }); - } - - public CoinTraderNet() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject dataJsonObject = jsonObject.getJSONObject("data"); - final JSONArray dataNamesArray = dataJsonObject.names(); - final JSONObject tickerJsonObject = dataJsonObject.getJSONObject(dataNamesArray.getString(0)); - ticker.bid = tickerJsonObject.getDouble("bid"); - ticker.ask = tickerJsonObject.getDouble("offer"); - ticker.vol = tickerJsonObject.getDouble("volume"); - ticker.high = tickerJsonObject.getDouble("high"); - ticker.low = tickerJsonObject.getDouble("low"); - ticker.last = tickerJsonObject.getDouble("lastTradePrice"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinTree.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinTree.java deleted file mode 100644 index d973d336..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CoinTree.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class CoinTree extends Market { - - private final static String NAME = "CoinTree"; - private final static String TTS_NAME = "Coin Tree"; - private final static String URL = "https://www.cointree.com.au/api/price/btc/aud"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.AUD - }); - } - - public CoinTree() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("Bid"); - ticker.ask = jsonObject.getDouble("Ask"); - ticker.last = jsonObject.getDouble("Spot"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinapult.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinapult.java deleted file mode 100644 index 8e331637..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinapult.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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.TimeUtils; - -public class Coinapult extends Market { - - private final static String NAME = "Coinapult"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.coinapult.com/api/ticker?market=%2$s_%1$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD, - Currency.EUR, - Currency.GBP, - Currency.XAG, - Currency.XAU - }); - } - - public Coinapult() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected String parseErrorFromJsonObject(int requestId, JSONObject jsonObject, CheckerInfo checkerInfo) throws Exception { - return jsonObject.getString("error"); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.last = jsonObject.getDouble("index"); - ticker.timestamp = jsonObject.getLong("updatetime") * TimeUtils.MILLIS_IN_SECOND; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinbase.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinbase.java deleted file mode 100644 index d063e9c6..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinbase.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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.model.currency.Currency; -import com.mobnetic.coinguardian.model.currency.VirtualCurrency; - -import org.json.JSONArray; -import org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; - -public class Coinbase extends Market { - - private final static String NAME = "Coinbase"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.gdax.com/products/%1$s-%2$s/ticker"; - private final static String URL_CURRENCY_PAIRS = "https://api.gdax.com/products/"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD, - Currency.EUR, - Currency.GBP - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC - }); - } - - public Coinbase() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.last = jsonObject.getDouble("price"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairs(int requestId, String responseString, List pairs) throws Exception { - final JSONArray jsonArray = new JSONArray(responseString); - for (int i = 0; i < jsonArray.length(); ++i) { - final JSONObject pairJsonObject = jsonArray.getJSONObject(i); - pairs.add(new CurrencyPairInfo( - pairJsonObject.getString("base_currency"), - pairJsonObject.getString("quote_currency"), - pairJsonObject.getString("id"))); - } - } -} \ No newline at end of file diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinnest.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinnest.java deleted file mode 100644 index 5b7793ab..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinnest.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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.TimeUtils; - -import org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class Coinnest extends Market { - - private final static String NAME = "Coinnest"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.coinnest.co.kr/api/pub/ticker?coin=%1$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.BCC, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETC, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.QTUM, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.NEO, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.KNC, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.TSL, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.OMG, new String[]{ - Currency.KRW - }); - } - - public Coinnest() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, - CheckerInfo checkerInfo) throws Exception { - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.bid = jsonObject.getDouble("buy"); - ticker.ask = jsonObject.getDouble("sell"); - ticker.last = jsonObject.getDouble("last"); - ticker.vol = jsonObject.getDouble("vol"); - ticker.timestamp = jsonObject.getLong("time") * TimeUtils.MILLIS_IN_SECOND; - } - - @Override - protected String parseErrorFromJsonObject(int requestId, JSONObject jsonObject, - CheckerInfo checkerInfo) throws Exception { - return jsonObject.getString("msg"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinome.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinome.java deleted file mode 100644 index 8665968b..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinome.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONArray; -import org.json.JSONObject; - -import java.util.List; -import java.util.Locale; - -public class Coinome extends Market { - - private final static String NAME = "Coinome"; - private final static String TTS_NAME = "Coin ome"; - private final static String URL = "https://www.coinome.com/api/v1/ticker.json"; - - public Coinome() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject tickerJsonObject = jsonObject.getJSONObject(checkerInfo.getCurrencyPairId()); - ticker.bid = tickerJsonObject.getDouble("highest_bid"); - ticker.ask = tickerJsonObject.getDouble("lowest_ask"); - //ticker.vol = tickerJsonObject.getDouble("24hr_volume"); Currently null - ticker.last = tickerJsonObject.getDouble("last"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray pairArray = jsonObject.names(); - for(int i=0; i= 2){ - pairs.add(new CurrencyPairInfo( - currencies[0].toUpperCase(Locale.US), - currencies[1].toUpperCase(Locale.US), - pairId - )); - } - } - } -} - diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinone.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinone.java deleted file mode 100644 index 09b6f0a4..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinone.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONArray; -import org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class Coinone extends Market { - - private final static String NAME = "Coinone"; - private final static String TTS_NAME = NAME; - private final static String URL_TICKER = "https://api.coinone.co.kr/ticker?currency=%1$s"; - private final static String URL_ORDERS = "https://api.coinone.co.kr/orderbook?currency=%1$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETC, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.XRP, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.BCH, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.QTUM, new String[]{ - Currency.KRW - }); - } - - public Coinone() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public int getNumOfRequests(CheckerInfo checkerRecord) { - return 2; - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - if (requestId == 0) { - return String.format(URL_TICKER, checkerInfo.getCurrencyBaseLowerCase()); - } else { - return String.format(URL_ORDERS, checkerInfo.getCurrencyBaseLowerCase()); - } - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, - CheckerInfo checkerInfo) throws Exception { - if(requestId == 0) { - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - ticker.timestamp = jsonObject.getLong("timestamp"); - } else { - ticker.bid = getFirstPriceFromOrder(jsonObject, "bid"); - ticker.ask = getFirstPriceFromOrder(jsonObject, "ask"); - } - } - - private double getFirstPriceFromOrder(JSONObject jsonObject, String key) throws Exception { - JSONArray array = jsonObject.getJSONArray(key); - - if(array.length() == 0) { - return Ticker.NO_DATA; - } - - JSONObject first = array.getJSONObject(0); - return first.getDouble("price"); - } -} \ No newline at end of file diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinse.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinse.java deleted file mode 100644 index 211adfbb..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinse.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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.VirtualCurrency; -import com.mobnetic.coinguardiandatamodule.R; - -public class Coinse extends Market { - - private final static String NAME = "Coins-E"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://www.coins-e.com/api/v2/markets/data/"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.ALP, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.AMC, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.ANC, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.ARG, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.BET, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.BQC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.BTG, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.CGB, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.CIN, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.CMC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.COL, new String[]{ VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.CRC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.CSC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.DEM, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.DGC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.DMD, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.DOGE, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.DTC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.ELC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.ELP, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.EMD, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.EZC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.FLO, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.FRK, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.FTC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.GDC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.GLC, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.GLX, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.HYC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.IFC, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC, VirtualCurrency.XPM }); - CURRENCY_PAIRS.put(VirtualCurrency.KGC, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.LBW, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.MEC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.NAN, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.NET, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.NIB, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.NRB, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.NUC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.NVC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.ORB, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.PPC, new String[]{ VirtualCurrency.BTC, VirtualCurrency.XPM }); - CURRENCY_PAIRS.put(VirtualCurrency.PTS, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.PWC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.PXC, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.QRK, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC, VirtualCurrency.XPM }); - CURRENCY_PAIRS.put(VirtualCurrency.RCH, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.REC, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.RED, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.SBC, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.SPT, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.TAG, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.TRC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.UNO, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.VLC, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.WDC, new String[]{ VirtualCurrency.BTC }); - CURRENCY_PAIRS.put(VirtualCurrency.XNC, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.XPM, new String[]{ VirtualCurrency.BTC, VirtualCurrency.LTC }); - CURRENCY_PAIRS.put(VirtualCurrency.ZET, new String[]{ VirtualCurrency.BTC }); - } - - public Coinse() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public int getCautionResId() { - return R.string.market_caution_much_data; - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - JSONObject marketsObject = jsonObject.getJSONObject("markets"); - JSONObject pairObject = marketsObject.getJSONObject(checkerInfo.getCurrencyBase()+"_"+checkerInfo.getCurrencyCounter()); - - JSONObject marketStatObject = pairObject.getJSONObject("marketstat"); - JSONObject inner24hObject = marketStatObject.getJSONObject("24h"); - - ticker.bid = marketStatObject.getDouble("bid"); - ticker.ask = marketStatObject.getDouble("ask"); - ticker.vol = inner24hObject.getDouble("volume"); - ticker.high = inner24hObject.getDouble("h"); - ticker.low = inner24hObject.getDouble("l"); - ticker.last = marketStatObject.getDouble("ltp"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinsph.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinsph.java deleted file mode 100644 index c0056ec2..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Coinsph.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONArray; -import org.json.JSONObject; - -import java.util.List; - -public class Coinsph extends Market { - - private final static String NAME = "Coins.ph"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://quote.coins.ph/v1/markets/%1$s"; - private final static String URL_CURRENCY_PAIRS = "https://quote.coins.ph/v1/markets"; - - public Coinsph() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - JSONObject marketJsonObject = jsonObject.getJSONObject("market"); - ticker.bid = marketJsonObject.getDouble("bid"); - ticker.ask = marketJsonObject.getDouble("ask"); - ticker.last = ticker.ask; - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray marketsJsonArray = jsonObject.getJSONArray("markets"); - for(int i=0; i0) { - return ordersJsonArray.getJSONObject(0).getDouble("price"); - } - return Ticker.NO_DATA; - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray marketsJsonArray = jsonObject.getJSONArray("markets"); - - for(int i=0; i pairs) throws Exception { - final JSONArray pairsNamesArray = jsonObject.names(); - - for(int i=0; i=2) { - pairs.add(new CurrencyPairInfo(split[0], split[1], pairName)); - } - } - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CryptoRush.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CryptoRush.java deleted file mode 100644 index 9bf9afd4..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/CryptoRush.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; - -import org.json.JSONArray; -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.coinguardiandatamodule.R; - -public class CryptoRush extends Market { - - public final static String NAME = "CryptoRush"; - public final static String TTS_NAME = "Crypto Rush"; - public final static String URL = "https://cryptorush.in/marketdata/all.json"; - private final static String URL_CURRENCY_PAIRS = URL; - - public CryptoRush() { - super(NAME, TTS_NAME, null); - } - - @Override - public int getCautionResId() { - return R.string.market_caution_much_data; - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject pairJsonObject = jsonObject.getJSONObject(checkerInfo.getCurrencyBase()+"/"+checkerInfo.getCurrencyCounter()); - - ticker.bid = pairJsonObject.getDouble("current_bid"); - ticker.ask = pairJsonObject.getDouble("current_ask"); - ticker.vol = pairJsonObject.getDouble("volume_base_24h"); - ticker.high = pairJsonObject.getDouble("highest_24h"); - ticker.low = pairJsonObject.getDouble("lowest_24h"); - ticker.last = pairJsonObject.getDouble("last_trade"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray pairNames = jsonObject.names(); - - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD, - Currency.EUR - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.NMC, new String[]{ - Currency.USD, - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.XPM, new String[]{ - Currency.USD, - VirtualCurrency.BTC, - VirtualCurrency.PPC - }); - CURRENCY_PAIRS.put(VirtualCurrency.PPC, new String[]{ - Currency.USD, - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.TRC, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.FTC, new String[]{ - Currency.USD, - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.DVC, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.WDC, new String[]{ - Currency.USD, - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.DGC, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.UTC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC - }); - } - - public CryptoTrade() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject dataObject = jsonObject.getJSONObject("data"); - - ticker.bid = dataObject.getDouble("max_bid"); - ticker.ask = dataObject.getDouble("min_ask"); - ticker.vol = dataObject.getDouble("vol_"+checkerInfo.getCurrencyBaseLowerCase()); - ticker.high = dataObject.getDouble("high"); - ticker.low = dataObject.getDouble("low"); - ticker.last = dataObject.getDouble("last"); - } - - @Override - protected String parseErrorFromJsonObject(int requestId, JSONObject jsonObject, CheckerInfo checkerInfo) throws Exception { - return jsonObject.getString("error"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Cryptoine.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Cryptoine.java deleted file mode 100644 index 360aec34..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Cryptoine.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; -import java.util.Locale; - -import org.json.JSONArray; -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; - -public class Cryptoine extends Market { - - private final static String NAME = "Cryptoine"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://cryptoine.com/api/1/ticker/%1$s"; - private final static String URL_CURRENCY_PAIRS = "https://cryptoine.com/api/1/markets"; - - public Cryptoine() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = getDoubleOrZero(jsonObject, "buy"); - ticker.ask = getDoubleOrZero(jsonObject, "sell"); - ticker.vol = getDoubleOrZero(jsonObject, "vol_exchange"); - ticker.high = getDoubleOrZero(jsonObject, "high"); - ticker.low = getDoubleOrZero(jsonObject, "low"); - ticker.last = getDoubleOrZero(jsonObject, "last"); - } - - private double getDoubleOrZero(JSONObject jsonObject, String name) throws Exception { - if(jsonObject.isNull(name)) - return 0; - return jsonObject.getDouble(name); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONObject dataJsonObject = jsonObject.getJSONObject("data"); - final JSONArray pairNames = dataJsonObject.names(); - - for(int i=0; i pairs) throws Exception { - final JSONArray pairsJsonArray = new JSONArray(responseString); - JSONArray currenciesJsonArray = null; - for(int i=0; i pairs) throws Exception { - final JSONArray dataJsonArray = jsonObject.getJSONArray("Data"); - for(int i=0; i CURRENCY_PAIRS_IDS = new HashMap(151); - static { - // Kept for backward compatibility - CURRENCY_PAIRS_IDS.put("42_BTC", 141); - CURRENCY_PAIRS_IDS.put("ADT_LTC", 94); - CURRENCY_PAIRS_IDS.put("ADT_XPM", 113); - CURRENCY_PAIRS_IDS.put("ALF_BTC", 57); - CURRENCY_PAIRS_IDS.put("AMC_BTC", 43); - CURRENCY_PAIRS_IDS.put("ANC_BTC", 66); - CURRENCY_PAIRS_IDS.put("ANC_LTC", 121); - CURRENCY_PAIRS_IDS.put("ARG_BTC", 48); - CURRENCY_PAIRS_IDS.put("ASC_LTC", 111); - CURRENCY_PAIRS_IDS.put("ASC_XPM", 112); - CURRENCY_PAIRS_IDS.put("AUR_BTC", 160); - CURRENCY_PAIRS_IDS.put("AUR_LTC", 161); - CURRENCY_PAIRS_IDS.put("BCX_BTC", 142); - CURRENCY_PAIRS_IDS.put("BEN_BTC", 157); - CURRENCY_PAIRS_IDS.put("BET_BTC", 129); - CURRENCY_PAIRS_IDS.put("BQC_BTC", 10); - CURRENCY_PAIRS_IDS.put("BTB_BTC", 23); - CURRENCY_PAIRS_IDS.put("BTE_BTC", 49); - CURRENCY_PAIRS_IDS.put("BTG_BTC", 50); - CURRENCY_PAIRS_IDS.put("BUK_BTC", 102); - CURRENCY_PAIRS_IDS.put("CACH_BTC", 154); - CURRENCY_PAIRS_IDS.put("CAP_BTC", 53); - CURRENCY_PAIRS_IDS.put("CASH_BTC", 150); - CURRENCY_PAIRS_IDS.put("CAT_BTC", 136); - CURRENCY_PAIRS_IDS.put("CGB_BTC", 70); - CURRENCY_PAIRS_IDS.put("CGB_LTC", 123); - CURRENCY_PAIRS_IDS.put("CLR_BTC", 95); - CURRENCY_PAIRS_IDS.put("CMC_BTC", 74); - CURRENCY_PAIRS_IDS.put("CNC_BTC", 8); - CURRENCY_PAIRS_IDS.put("CNC_LTC", 17); - CURRENCY_PAIRS_IDS.put("COL_LTC", 109); - CURRENCY_PAIRS_IDS.put("COL_XPM", 110); - CURRENCY_PAIRS_IDS.put("CPR_LTC", 91); - CURRENCY_PAIRS_IDS.put("CRC_BTC", 58); - CURRENCY_PAIRS_IDS.put("CSC_BTC", 68); - CURRENCY_PAIRS_IDS.put("DBL_LTC", 46); - CURRENCY_PAIRS_IDS.put("DEM_BTC", 131); - CURRENCY_PAIRS_IDS.put("DGB_BTC", 167); - CURRENCY_PAIRS_IDS.put("DGC_BTC", 26); - CURRENCY_PAIRS_IDS.put("DGC_LTC", 96); - CURRENCY_PAIRS_IDS.put("DMD_BTC", 72); - CURRENCY_PAIRS_IDS.put("DOGE_BTC", 132); - CURRENCY_PAIRS_IDS.put("DOGE_LTC", 135); - CURRENCY_PAIRS_IDS.put("DRK_BTC", 155); - CURRENCY_PAIRS_IDS.put("DVC_BTC", 40); - CURRENCY_PAIRS_IDS.put("DVC_LTC", 52); - CURRENCY_PAIRS_IDS.put("DVC_XPM", 122); - CURRENCY_PAIRS_IDS.put("EAC_BTC", 139); - CURRENCY_PAIRS_IDS.put("ELC_BTC", 12); - CURRENCY_PAIRS_IDS.put("ELP_LTC", 93); - CURRENCY_PAIRS_IDS.put("EMD_BTC", 69); - CURRENCY_PAIRS_IDS.put("EZC_BTC", 47); - CURRENCY_PAIRS_IDS.put("EZC_LTC", 55); - CURRENCY_PAIRS_IDS.put("FFC_BTC", 138); - CURRENCY_PAIRS_IDS.put("FLAP_BTC", 165); - CURRENCY_PAIRS_IDS.put("FLO_LTC", 61); - CURRENCY_PAIRS_IDS.put("FRC_BTC", 39); - CURRENCY_PAIRS_IDS.put("FRK_BTC", 33); - CURRENCY_PAIRS_IDS.put("FST_BTC", 44); - CURRENCY_PAIRS_IDS.put("FST_LTC", 124); - CURRENCY_PAIRS_IDS.put("FTC_BTC", 5); - CURRENCY_PAIRS_IDS.put("GDC_BTC", 82); - CURRENCY_PAIRS_IDS.put("GLC_BTC", 76); - CURRENCY_PAIRS_IDS.put("GLD_BTC", 30); - CURRENCY_PAIRS_IDS.put("GLD_LTC", 36); - CURRENCY_PAIRS_IDS.put("GLX_BTC", 78); - CURRENCY_PAIRS_IDS.put("GME_LTC", 84); - CURRENCY_PAIRS_IDS.put("HBN_BTC", 80); - CURRENCY_PAIRS_IDS.put("IFC_BTC", 59); - CURRENCY_PAIRS_IDS.put("IFC_LTC", 60); - CURRENCY_PAIRS_IDS.put("IFC_XPM", 105); - CURRENCY_PAIRS_IDS.put("IXC_BTC", 38); - CURRENCY_PAIRS_IDS.put("JKC_BTC", 25); - CURRENCY_PAIRS_IDS.put("JKC_LTC", 35); - CURRENCY_PAIRS_IDS.put("KGC_BTC", 65); - CURRENCY_PAIRS_IDS.put("LEAF_BTC", 148); - CURRENCY_PAIRS_IDS.put("LK7_BTC", 116); - CURRENCY_PAIRS_IDS.put("LKY_BTC", 34); - CURRENCY_PAIRS_IDS.put("LOT_BTC", 137); - CURRENCY_PAIRS_IDS.put("LTC_BTC", 3); - CURRENCY_PAIRS_IDS.put("MAX_BTC", 152); - CURRENCY_PAIRS_IDS.put("MEC_BTC", 45); - CURRENCY_PAIRS_IDS.put("MEC_LTC", 100); - CURRENCY_PAIRS_IDS.put("MEM_LTC", 56); - CURRENCY_PAIRS_IDS.put("MEOW_BTC", 149); - CURRENCY_PAIRS_IDS.put("MINT_BTC", 156); - CURRENCY_PAIRS_IDS.put("MNC_BTC", 7); - CURRENCY_PAIRS_IDS.put("MOON_LTC", 145); - CURRENCY_PAIRS_IDS.put("MST_LTC", 62); - CURRENCY_PAIRS_IDS.put("MZC_BTC", 164); - CURRENCY_PAIRS_IDS.put("NAN_BTC", 64); - CURRENCY_PAIRS_IDS.put("NBL_BTC", 32); - CURRENCY_PAIRS_IDS.put("NEC_BTC", 90); - CURRENCY_PAIRS_IDS.put("NET_BTC", 134); - CURRENCY_PAIRS_IDS.put("NET_LTC", 108); - CURRENCY_PAIRS_IDS.put("NET_XPM", 104); - CURRENCY_PAIRS_IDS.put("NMC_BTC", 29); - CURRENCY_PAIRS_IDS.put("NRB_BTC", 54); - CURRENCY_PAIRS_IDS.put("NVC_BTC", 13); - CURRENCY_PAIRS_IDS.put("NXT_BTC", 159); - CURRENCY_PAIRS_IDS.put("NXT_LTC", 162); - CURRENCY_PAIRS_IDS.put("ORB_BTC", 75); - CURRENCY_PAIRS_IDS.put("OSC_BTC", 144); - CURRENCY_PAIRS_IDS.put("PHS_BTC", 86); - CURRENCY_PAIRS_IDS.put("POINTS_BTC", 120); - CURRENCY_PAIRS_IDS.put("PPC_BTC", 28); - CURRENCY_PAIRS_IDS.put("PPC_LTC", 125); - CURRENCY_PAIRS_IDS.put("PTS_BTC", 119); - CURRENCY_PAIRS_IDS.put("PXC_BTC", 31); - CURRENCY_PAIRS_IDS.put("PXC_LTC", 101); - CURRENCY_PAIRS_IDS.put("PYC_BTC", 92); - CURRENCY_PAIRS_IDS.put("QRK_BTC", 71); - CURRENCY_PAIRS_IDS.put("QRK_LTC", 126); - CURRENCY_PAIRS_IDS.put("RDD_BTC", 169); - CURRENCY_PAIRS_IDS.put("RED_LTC", 87); - CURRENCY_PAIRS_IDS.put("RPC_BTC", 143); - CURRENCY_PAIRS_IDS.put("RYC_BTC", 9); - CURRENCY_PAIRS_IDS.put("RYC_LTC", 37); - CURRENCY_PAIRS_IDS.put("SAT_BTC", 168); - CURRENCY_PAIRS_IDS.put("SBC_BTC", 51); - CURRENCY_PAIRS_IDS.put("SBC_LTC", 128); - CURRENCY_PAIRS_IDS.put("SMC_BTC", 158); - CURRENCY_PAIRS_IDS.put("SPT_BTC", 81); - CURRENCY_PAIRS_IDS.put("SRC_BTC", 88); - CURRENCY_PAIRS_IDS.put("STR_BTC", 83); - CURRENCY_PAIRS_IDS.put("SXC_BTC", 153); - CURRENCY_PAIRS_IDS.put("SXC_LTC", 98); - CURRENCY_PAIRS_IDS.put("TAG_BTC", 117); - CURRENCY_PAIRS_IDS.put("TAK_BTC", 166); - CURRENCY_PAIRS_IDS.put("TEK_BTC", 114); - CURRENCY_PAIRS_IDS.put("TGC_BTC", 130); - CURRENCY_PAIRS_IDS.put("TIPS_LTC", 147); - CURRENCY_PAIRS_IDS.put("TIX_LTC", 107); - CURRENCY_PAIRS_IDS.put("TIX_XPM", 103); - CURRENCY_PAIRS_IDS.put("TRC_BTC", 27); - CURRENCY_PAIRS_IDS.put("UNO_BTC", 133); - CURRENCY_PAIRS_IDS.put("UTC_BTC", 163); - CURRENCY_PAIRS_IDS.put("VTC_BTC", 151); - CURRENCY_PAIRS_IDS.put("WDC_BTC", 14); - CURRENCY_PAIRS_IDS.put("WDC_LTC", 21); - CURRENCY_PAIRS_IDS.put("XJO_BTC", 115); - CURRENCY_PAIRS_IDS.put("XNC_LTC", 67); - CURRENCY_PAIRS_IDS.put("XPM_BTC", 63); - CURRENCY_PAIRS_IDS.put("XPM_LTC", 106); - CURRENCY_PAIRS_IDS.put("YAC_BTC", 11); - CURRENCY_PAIRS_IDS.put("YAC_LTC", 22); - CURRENCY_PAIRS_IDS.put("YBC_BTC", 73); - CURRENCY_PAIRS_IDS.put("ZCC_BTC", 140); - CURRENCY_PAIRS_IDS.put("ZED_BTC", 170); - CURRENCY_PAIRS_IDS.put("ZET_BTC", 85); - CURRENCY_PAIRS_IDS.put("ZET_LTC", 127); - } - - public Cryptsy() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - if(checkerInfo.getCurrencyPairId()==null) { - final String pairString = String.format("%1$s_%2$s", checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - if(CURRENCY_PAIRS_IDS.containsKey(pairString)) { - return String.format(URL, String.valueOf(CURRENCY_PAIRS_IDS.get(pairString))); - } - } - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject dataJsonObject = jsonObject.getJSONObject("data"); - final JSONObject daySummaryObject = dataJsonObject.getJSONObject("24hr"); - - // ticker.vol = daySummaryObject.getDouble("volume"); TODO enable later when there will be any documentation of real data to test on - ticker.high = daySummaryObject.getDouble("price_high"); - ticker.low = daySummaryObject.getDouble("price_low"); - ticker.last = dataJsonObject.getJSONObject("last_trade").getDouble("price"); - } - - @Override - protected String parseError(int requestId, String responseString, CheckerInfo checkerInfo) throws Exception { - if(checkerInfo.getCurrencyPairId()==null) { - return "Perform sync and re-add this Checker"; - } - return super.parseError(requestId, responseString, checkerInfo); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray dataJsonArray = jsonObject.getJSONArray("data"); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.DASH, new String[]{ - Currency.PLN, - Currency.USD - }); - } - - public Dashcurex() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyCounterLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = parsePrice(jsonObject.getDouble("best_ask")); - ticker.ask = parsePrice(jsonObject.getDouble("best_bid")); - ticker.vol = parseBTC(jsonObject.getDouble("total_volume")); - ticker.high = parsePrice(jsonObject.getDouble("highest_tx_price")); - ticker.low = parsePrice(jsonObject.getDouble("lowest_tx_price")); - ticker.last = parsePrice(jsonObject.getDouble("last_tx_price")); - } - - private double parsePrice(double price) { - return price/10000; - } - - private double parseBTC(double satoshi) { - return satoshi/100000000; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/DolarBlueNet.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/DolarBlueNet.java deleted file mode 100644 index a5829c36..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/DolarBlueNet.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class DolarBlueNet extends Market { - - private final static String NAME = "DolarBlue.net"; - private final static String TTS_NAME = "Dolar Blue"; - private final static String URL = "http://dolar.bitplanet.info/api.php"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(Currency.USD, new String[]{ - Currency.ARS - }); - } - - public DolarBlueNet() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.ask = jsonObject.getDouble("venta"); - ticker.bid = jsonObject.getDouble("compra"); - ticker.last = ticker.ask; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/ETHEXIndia.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/ETHEXIndia.java deleted file mode 100644 index 6ff0401f..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/ETHEXIndia.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class ETHEXIndia extends Market { - - private final static String NAME = "ETHEX India"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.ethexindia.com/ticker/"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - Currency.INR - }); - } - - public ETHEXIndia() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("current_volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last_traded_price"); - ticker.timestamp = jsonObject.getLong("last_traded_time"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Exmo.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Exmo.java deleted file mode 100644 index 24bda89f..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Exmo.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONArray; -import org.json.JSONObject; - -import java.util.List; - -public class Exmo extends Market { - - private final static String NAME = "Exmo"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.exmo.com/v1/ticker/"; - private final static String URL_CURRENCY_PAIRS = "https://api.exmo.com/v1/pair_settings/"; - - public Exmo() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject pairJsonObject = jsonObject.getJSONObject(checkerInfo.getCurrencyBase()+"_"+checkerInfo.getCurrencyCounter()); - ticker.bid = pairJsonObject.getDouble("buy_price"); - ticker.ask = pairJsonObject.getDouble("sell_price"); - ticker.vol = pairJsonObject.getDouble("vol"); - ticker.high = pairJsonObject.getDouble("high"); - ticker.low = pairJsonObject.getDouble("low"); - ticker.last = pairJsonObject.getDouble("last_trade"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray pairIds = jsonObject.names(); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.KNC, new String[]{ - Currency.KRW - }); - } - - public FoscEx() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.vol = ParseUtils.getDoubleFromString(jsonObject, "volume"); - ticker.last = ParseUtils.getDoubleFromString(jsonObject, "last"); - ticker.timestamp = jsonObject.getLong("timestamp") * TimeUtils.MILLIS_IN_SECOND; - - } - - @Override - protected String parseErrorFromJsonObject(int requestId, JSONObject jsonObject, CheckerInfo checkerInfo) throws Exception { - return jsonObject.getString("error"); - } - -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Fxbtc.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Fxbtc.java deleted file mode 100644 index 9ed08af3..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Fxbtc.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class Fxbtc extends Market { - - private final static String NAME = "FxBtc"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://www.fxbtc.com/jport?op=query&type=ticker&symbol=%1$s_%2$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.CNY - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.CNY, - VirtualCurrency.BTC - }); - } - - public Fxbtc() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject tickerObject = jsonObject.getJSONObject("ticker"); - - ticker.bid = tickerObject.getDouble("bid"); - ticker.ask = tickerObject.getDouble("ask"); - ticker.vol = tickerObject.getDouble("vol"); - ticker.high = tickerObject.getDouble("high"); - ticker.low = tickerObject.getDouble("low"); - ticker.last = tickerObject.getDouble("last_rate"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/FybSE.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/FybSE.java deleted file mode 100644 index c9d670ec..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/FybSE.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class FybSE extends Market { - - private final static String NAME = "FYB-SE"; - private final static String TTS_NAME = "Fyb SE"; - private final static String URL = "https://www.fybse.se/api/%1$s/ticker.json"; - - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.SEK - }); - } - - public FybSE() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.last = ticker.ask; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/FybSG.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/FybSG.java deleted file mode 100644 index 1945de78..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/FybSG.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class FybSG extends Market { - - private final static String NAME = "FYB-SG"; - private final static String TTS_NAME = "Fyb SG"; - private final static String URL = "https://www.fybsg.com/api/%1$s/ticker.json"; - - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.SGD - }); - } - - public FybSG() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.last = ticker.ask; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/GateCoin.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/GateCoin.java deleted file mode 100644 index ff94a318..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/GateCoin.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONArray; -import org.json.JSONObject; - -import java.util.List; - -public class GateCoin extends Market { - - private final static String NAME = "GateCoin"; - private final static String TTS_NAME = "Gate Coin"; - private final static String URL = "https://api.gatecoin.com/Public/LiveTickers"; - - public GateCoin() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONArray pairNames = jsonObject.getJSONArray("tickers"); //returned JSON text is an ARRAY of JSONObjects - String userCurrencyPairChoice = checkerInfo.getCurrencyBase().concat(checkerInfo.getCurrencyCounter()); - //each JSONObject in the Array has a currency pair and its corresponding ticker details - for (int i = 0; i < pairNames.length(); ++i) { - JSONObject tickerDetails = pairNames.getJSONObject(i); - String currentPairId = tickerDetails.getString("currencyPair"); - if (currentPairId.equals(userCurrencyPairChoice)) { - ticker.bid = tickerDetails.getDouble("bid"); - ticker.ask = tickerDetails.getDouble("ask"); - ticker.vol = tickerDetails.getDouble("volume"); - ticker.high = tickerDetails.getDouble("high"); - ticker.low = tickerDetails.getDouble("low"); - ticker.last = tickerDetails.getDouble("last"); - ticker.timestamp = tickerDetails.getLong("createDateTime"); - break; - } - } - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray pairNames = jsonObject.getJSONArray("tickers"); //returned JSON text is an ARRAY of JSONObjects - for (int i = 0; i < pairNames.length(); ++i) { - //each JSONObject in the Array has a currency pair and its corresponding ticker details - String pairId = pairNames.getJSONObject(i).getString("currencyPair"); - if (pairId == null) - continue; - String[] currencies = new String[2]; - //split by index - use char positions (start, end+1) as index - currencies[0] = pairId.substring(0, 3); //base currency - currencies[1] = pairId.substring(3, 6); //counter currency - if (currencies.length != 2) - continue; - pairs.add(new CurrencyPairInfo(currencies[0], currencies[1], pairId)); - } - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Gemini.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Gemini.java deleted file mode 100644 index 92eb2592..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Gemini.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -import org.json.JSONArray; -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; - -public class Gemini extends Market { - - private final static String NAME = "Gemini"; - private final static String TTS_NAME = "Gemini"; - private final static String URL = "https://api.gemini.com/v1/book/%1$s%2$s?limit_asks=1&limit_bids=1"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - - // Gemini allows dynamic symbol retrieval but returns it in format: [ "btcusd" ] - // This doesn't provide an easy way to programmatically split the currency - // So just define them - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - VirtualCurrency.BTC, - Currency.USD - }); - } - - public Gemini() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - //Gemini isn't a traditional tracker, rather it seems to return the X last bids and asks - //We could do something like take the average of the last Y prices - //But I will just take the average of the last bid and asking price - - final JSONArray bidsArray = jsonObject.getJSONArray("bids"); - if (bidsArray != null && bidsArray.length() > 0) { - ticker.bid = bidsArray.getJSONObject(0).getDouble("price"); - } - - final JSONArray asksArray = jsonObject.getJSONArray("asks"); - if (asksArray != null && asksArray.length() > 0) { - ticker.ask = asksArray.getJSONObject(0).getDouble("price"); - } - - if (ticker.bid != Ticker.NO_DATA && ticker.ask != Ticker.NO_DATA) { - ticker.last = (ticker.bid + ticker.ask) / 2.0; - } else if (ticker.bid != Ticker.NO_DATA) { - ticker.last = ticker.bid; - } else if (ticker.ask != Ticker.NO_DATA) { - ticker.last = ticker.ask; - } else { - ticker.last = 0; - } - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/HitBtc.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/HitBtc.java deleted file mode 100644 index d28d7550..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/HitBtc.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; - -import org.json.JSONArray; -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 HitBtc extends Market { - - private final static String NAME = "HitBTC"; - private final static String TTS_NAME = "Hit BTC"; - private final static String URL = "https://api.hitbtc.com/api/1/public/%1$s/ticker"; - private final static String URL_CURRENCY_PAIRS = "https://api.hitbtc.com/api/1/public/symbols"; - - public HitBtc() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - 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"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray symbolsJsonArray = jsonObject.getJSONArray("symbols"); - for(int i=0; i pairs) throws Exception { - if("ok".equalsIgnoreCase(jsonObject.getString("status"))) { - final JSONArray data = jsonObject.getJSONArray("data"); - for(int i = 0; i < data.length(); i++) { - final String base = data.getJSONObject(i).getString("base-currency").toUpperCase(Locale.US); - final String counter = data.getJSONObject(i).getString("quote-currency").toUpperCase(Locale.US); - pairs.add(new CurrencyPairInfo(base, counter, null)); - } - } else { - throw new Exception("Parse currency pairs error."); - } - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Igot.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Igot.java deleted file mode 100644 index d1bd8659..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Igot.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; -import java.util.Locale; - -import org.json.JSONArray; -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.model.currency.VirtualCurrency; - -public class Igot extends Market { - - private final static String NAME = "igot"; - private final static String TTS_NAME = "igot"; - private final static String URL = "https://www.igot.com/api/v1/stats/buy"; - private final static String URL_CURRENCY_PAIRS = URL; - - public Igot() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject pairJsonObject = jsonObject.getJSONObject(checkerInfo.getCurrencyPairId()); - ticker.high = pairJsonObject.getDouble("highest_today"); - ticker.low = pairJsonObject.getDouble("lowest_today"); - ticker.last = pairJsonObject.getDouble("current_rate"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray pairsJsonArray = jsonObject.names(); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD, - Currency.SGD, - Currency.EUR - }); - } - - public ItBit() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - private String fixCurrency(String currency) { - if (VirtualCurrency.BTC.equals(currency)) return VirtualCurrency.XBT; - return currency; - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, fixCurrency(checkerInfo.getCurrencyBase()), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume24h"); - ticker.high = jsonObject.getDouble("high24h"); - ticker.low = jsonObject.getDouble("low24h"); - ticker.last = jsonObject.getDouble("lastPrice"); - } - - @Override - protected String parseErrorFromJsonObject(int requestId, JSONObject jsonObject, CheckerInfo checkerInfo) throws Exception { - return jsonObject.getString("message"); // not working? - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Justcoin.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Justcoin.java deleted file mode 100644 index 6c509a75..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Justcoin.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class Justcoin extends Market { - - private final static String NAME = "Justcoin"; - private final static String TTS_NAME = "Just coin"; - private final static String URL = "https://justcoin.com/api/2/%1$s%2$s/money/ticker"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD, - Currency.EUR, - Currency.GBP, - Currency.HKD, - Currency.CHF, - Currency.AUD, - Currency.CAD, - Currency.NZD, - Currency.SGD, - Currency.JPY - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.DOGE, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.STR, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.XRP, new String[]{ - VirtualCurrency.BTC - }); - } - - public Justcoin() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject dataObject = jsonObject.getJSONObject("data"); - - ticker.bid = getPriceValueFromObject(dataObject, "buy"); - ticker.ask = getPriceValueFromObject(dataObject, "sell"); - ticker.vol = getPriceValueFromObject(dataObject, "vol"); - ticker.high = getPriceValueFromObject(dataObject, "high"); - ticker.low = getPriceValueFromObject(dataObject, "low"); - ticker.last = getPriceValueFromObject(dataObject, "last"); - } - - private double getPriceValueFromObject(JSONObject jsonObject, String key) throws Exception { - final JSONObject innerObject = jsonObject.getJSONObject(key); - return innerObject.getDouble("value"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Koinex.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Koinex.java deleted file mode 100644 index 2e887842..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Koinex.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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.model.currency.Currency; - -import org.json.JSONArray; -import org.json.JSONObject; - -import java.util.List; - -public class Koinex extends Market { - - private final static String NAME = "Koinex"; - private final static String TTS_NAME = "Koin ex"; - private final static String URL = "https://koinex.in/api/ticker"; - private final static String URL_CURRENCY_PAIRS = URL; - - public Koinex() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject names = jsonObject.getJSONObject("stats"); - JSONObject tickerJsonObject = names.getJSONObject(checkerInfo.getCurrencyBase()); - ticker.bid = tickerJsonObject.getDouble("highest_bid"); - ticker.ask = tickerJsonObject.getDouble("lowest_ask"); - ticker.vol = tickerJsonObject.getDouble("vol_24hrs"); - ticker.high = tickerJsonObject.getDouble("max_24hrs"); - ticker.low = tickerJsonObject.getDouble("min_24hrs"); - ticker.last = tickerJsonObject.getDouble("last_traded_price"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONObject currencyJSONObject = jsonObject.getJSONObject("stats"); - final JSONArray currencyArray = currencyJSONObject.names(); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.TRY - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.TRY - }); - } - - public Koinim() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - if(VirtualCurrency.LTC.equals(checkerInfo.getCurrencyBase())) { - return URL_LTC; - } - return URL_BTC; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("buy"); - ticker.ask = jsonObject.getDouble("sell"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last_order"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Korbit.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Korbit.java deleted file mode 100644 index b9416d8a..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Korbit.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class Korbit extends Market { - - private final static String NAME = "Korbit"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.korbit.co.kr/v1/ticker/detailed?currency_pair=%1$s_%2$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETC, new String[]{ - Currency.KRW - }); - CURRENCY_PAIRS.put(VirtualCurrency.XRP, new String[]{ - Currency.KRW - }); - } - - public Korbit() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), - checkerInfo.getCurrencyCounterLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - ticker.timestamp = jsonObject.getLong("timestamp"); - } -} \ No newline at end of file diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Kraken.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Kraken.java deleted file mode 100644 index 5c93c185..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Kraken.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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.model.currency.VirtualCurrency; - -import org.json.JSONArray; -import org.json.JSONObject; - -import java.util.List; - -public class Kraken extends Market { - - private final static String NAME = "Kraken"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.kraken.com/0/public/Ticker?pair=%1$s"; - private final static String URL_CURRENCY_PAIRS = "https://api.kraken.com/0/public/AssetPairs"; - - public Kraken() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - if(checkerInfo.getCurrencyPairId()!=null) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } else { - final String currencyBase = fixCurrency(checkerInfo.getCurrencyBase()); - final String currencyCounter = fixCurrency(checkerInfo.getCurrencyCounter()); - return String.format(URL, currencyBase+currencyCounter); - } - } - - private String fixCurrency(String currency) { - if (VirtualCurrency.BTC.equals(currency)) return VirtualCurrency.XBT; - if (VirtualCurrency.VEN.equals(currency)) return VirtualCurrency.XVN; - if (VirtualCurrency.DOGE.equals(currency)) return VirtualCurrency.XDG; - return currency; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject resultObject = jsonObject.getJSONObject("result"); - final JSONObject pairObject = resultObject.getJSONObject(resultObject.names().getString(0)); - - ticker.bid = getDoubleFromJsonArrayObject(pairObject, "b"); - ticker.ask = getDoubleFromJsonArrayObject(pairObject, "a"); - ticker.vol = getDoubleFromJsonArrayObject(pairObject, "v"); - ticker.high = getDoubleFromJsonArrayObject(pairObject, "h"); - ticker.low = getDoubleFromJsonArrayObject(pairObject, "l"); - ticker.last = getDoubleFromJsonArrayObject(pairObject, "c"); - } - - private double getDoubleFromJsonArrayObject(JSONObject jsonObject, String arrayKey) throws Exception { - final JSONArray jsonArray = jsonObject.getJSONArray(arrayKey); - return jsonArray!=null && jsonArray.length()>0 ? jsonArray.getDouble(0) : 0; - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONObject result = jsonObject.getJSONObject("result"); - final JSONArray pairNames = result.names(); - - for(int i=0; i=2) { - final char firstChar = currency.charAt(0); - if (firstChar == 'Z' || firstChar == 'X') { - currency = currency.substring(1); - } - } - if (VirtualCurrency.XBT.equals(currency)) return VirtualCurrency.BTC; - if (VirtualCurrency.XVN.equals(currency)) return VirtualCurrency.VEN; - if (VirtualCurrency.XDG.equals(currency)) return VirtualCurrency.DOGE; - return currency; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Kucoin.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Kucoin.java deleted file mode 100644 index 021add3d..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Kucoin.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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.model.currency.Currency; -import com.mobnetic.coinguardian.model.currency.VirtualCurrency; - -import org.json.JSONArray; -import org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Locale; - - -public class Kucoin extends Market { - - private final static String NAME = "Kucoin"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.kucoin.com/api/v1/market/stats?symbol=%1$s"; - - private final static String URL_COINS_PAIRS = "https://api.kucoin.com/api/v1/symbols"; - - public Kucoin() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - JSONObject tickerJsonObject = jsonObject.getJSONObject("data"); - ticker.bid = tickerJsonObject.getDouble("buy"); - ticker.ask = tickerJsonObject.getDouble("sell"); - ticker.vol = tickerJsonObject.getDouble("vol"); - ticker.high = tickerJsonObject.getDouble("high"); - ticker.low = tickerJsonObject.getDouble("low"); - ticker.last = tickerJsonObject.getDouble("last"); - ticker.timestamp = tickerJsonObject.getLong("time"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_COINS_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray data = jsonObject.getJSONArray("data"); - - for(int i=0; i< data.length(); ++i) { - final JSONObject pairJsonObject = data.getJSONObject(i); - pairs.add(new CurrencyPairInfo( - pairJsonObject.getString("baseCurrency"), - pairJsonObject.getString("quoteCurrency"), - pairJsonObject.getString("symbol") - )); - } - } - -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/LakeBTC.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/LakeBTC.java deleted file mode 100644 index e47b4bf6..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/LakeBTC.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; -import java.util.Locale; - -import org.json.JSONArray; -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.model.currency.VirtualCurrency; - -public class LakeBTC extends Market { - - private final static String NAME = "LakeBTC"; - private final static String TTS_NAME = "Lake BTC"; - private final static String URL = "https://api.lakebtc.com/api_v2/ticker"; - private final static String URL_CURRENCY_PAIRS = URL; - - public LakeBTC() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final String pairId; - if (checkerInfo.getCurrencyPairId() == null) { - pairId = checkerInfo.getCurrencyBaseLowerCase() + checkerInfo.getCurrencyCounterLowerCase(); - } else { - pairId = checkerInfo.getCurrencyPairId(); - } - final JSONObject pairJsonObject = jsonObject.getJSONObject(pairId); - - ticker.bid = pairJsonObject.getDouble("bid"); - ticker.ask = pairJsonObject.getDouble("ask"); - ticker.vol = pairJsonObject.getDouble("volume"); - ticker.high = pairJsonObject.getDouble("high"); - ticker.low = pairJsonObject.getDouble("low"); - ticker.last = pairJsonObject.getDouble("last"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray pairsJsonArray = jsonObject.names(); - for(int i=0; i pairs) throws Exception { - final JSONObject pairsJsonObject = jsonObject.getJSONObject("pairs"); - final JSONArray pairsNames = pairsJsonObject.names(); - for(int i=0; i pairs) throws Exception { - final JSONArray tickerArray = new JSONArray(responseString); - - for(int i = 0; i < tickerArray.length(); ++i) { - final JSONObject tickerRow = tickerArray.getJSONObject(i); - final String symbol = tickerRow.getString("symbol"); - final String[] currencyNames = symbol.split("/"); - - if(currencyNames != null && currencyNames.length >= 2) { - pairs.add(new CurrencyPairInfo( - currencyNames[0], - currencyNames[1], - symbol)); - } - } - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/LocalBitcoins.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/LocalBitcoins.java deleted file mode 100644 index a4b06ba9..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/LocalBitcoins.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; - -import org.json.JSONArray; -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.model.currency.VirtualCurrency; - -public class LocalBitcoins extends Market { - - private final static String NAME = "LocalBitcoins"; - private final static String TTS_NAME = "Local Bitcoins"; - private final static String URL = "https://localbitcoins.com/bitcoinaverage/ticker-all-currencies/"; - private final static String URL_CURRENCY_PAIRS = URL; - - public LocalBitcoins() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject pairJsonObject = jsonObject.getJSONObject(checkerInfo.getCurrencyPairId()); - ticker.vol = pairJsonObject.getDouble("volume_btc"); - final JSONObject ratesJsonObject = pairJsonObject.getJSONObject("rates"); - ticker.last = ratesJsonObject.getDouble("last"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray pairsJsonArray = jsonObject.names(); - for(int i=0; i pairs) throws Exception { - final JSONArray jsonArray = new JSONArray(responseString); - for (int i = 0; i < jsonArray.length(); ++i) { - final JSONObject pairJsonObject = jsonArray.getJSONObject(i); - pairs.add(new CurrencyPairInfo( - pairJsonObject.getString("baseAssetId"), - pairJsonObject.getString("quotingAssetId"), - pairJsonObject.getString("id"))); - } - } -} \ No newline at end of file diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/McxNOW.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/McxNOW.java deleted file mode 100644 index 448afd1b..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/McxNOW.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.io.StringReader; -import java.util.List; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.InputSource; - -import android.text.TextUtils; - -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.model.currency.VirtualCurrency; -import com.mobnetic.coinguardian.util.XmlParserUtils; - -public class McxNOW extends Market { - - private final static String NAME = "McxNOW"; - private final static String TTS_NAME = "MCX now"; - private final static String URL = "https://mcxnow.com/orders?cur=%1$s"; - private final static String URL_CURRENCY_PAIRS = "https://mcxnow.com/current"; - - public McxNOW() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase()); - } - - @Override - protected void parseTicker(int requestId, String responseString, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - InputSource is = new InputSource(); - is.setCharacterStream(new StringReader(responseString)); - Document doc = db.parse(is); - - ticker.bid = getFirstPriceFromOrder(doc, "buy"); - ticker.ask = getFirstPriceFromOrder(doc, "sell"); - ticker.vol = XmlParserUtils.getDoubleNodeValue(XmlParserUtils.getFirstElementByTagName(doc, "curvol")); - ticker.high = XmlParserUtils.getDoubleNodeValue(XmlParserUtils.getFirstElementByTagName(doc, "priceh")); - ticker.low = XmlParserUtils.getDoubleNodeValue(XmlParserUtils.getFirstElementByTagName(doc, "pricel")); - ticker.last = XmlParserUtils.getDoubleNodeValue(XmlParserUtils.getFirstElementByTagName(doc, "lprice")); - } - - private double getFirstPriceFromOrder(Document doc, String arrayName) throws Exception { - Node arrayNode = XmlParserUtils.getFirstElementByTagName(doc, arrayName); - if(arrayNode!=null) { - NodeList orderNodes = ((Element)arrayNode).getElementsByTagName("o"); - if(orderNodes!=null && orderNodes.getLength()>1) { - Node orderNode = orderNodes.item(1); - if(orderNode!=null && orderNode instanceof Element) { - NodeList priceNodes = ((Element)orderNode).getElementsByTagName("p"); - if(priceNodes!=null && priceNodes.getLength()>0) { - return XmlParserUtils.getDoubleNodeValue(priceNodes.item(0)); - } - } - } - } - return Ticker.NO_DATA; - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairs(int requestId, String responseString, List pairs) throws Exception { - DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - InputSource is = new InputSource(); - is.setCharacterStream(new StringReader(responseString)); - Document doc = db.parse(is); - - - final NodeList nodes = doc.getElementsByTagName("cur"); - Element node = null; - if(nodes!=null) { - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap<>(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.BRL - }); - CURRENCY_PAIRS.put(VirtualCurrency.BCH, new String[]{ - Currency.BRL - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.BRL - }); - } - - public Mercado() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject tickerJsonObject = jsonObject.getJSONObject("ticker"); - - ticker.bid = tickerJsonObject.getDouble("buy"); - ticker.ask = tickerJsonObject.getDouble("sell"); - ticker.vol = tickerJsonObject.getDouble("vol"); - ticker.high = tickerJsonObject.getDouble("high"); - ticker.low = tickerJsonObject.getDouble("low"); - ticker.last = tickerJsonObject.getDouble("last"); - ticker.timestamp = tickerJsonObject.getLong("date")*TimeUtils.MILLIS_IN_SECOND; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Mexbt.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Mexbt.java deleted file mode 100644 index 66ace413..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Mexbt.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class Mexbt extends Market { - - private final static String NAME = "meXBT"; - private final static String TTS_NAME = "me XBT"; - private final static String URL = "https://data.mexbt.com/ticker/%1$s%2$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - VirtualCurrency.MXN, - Currency.USD, - }); - } - - public Mexbt() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume24Hour"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/MintPal.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/MintPal.java deleted file mode 100644 index f1b85697..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/MintPal.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; - -import org.json.JSONArray; -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; - -public class MintPal extends Market { - - private final static String NAME = "MintPal"; - private final static String TTS_NAME = "Mint Pal"; - private final static String URL = "https://api.mintpal.com/market/stats/%1$s/%2$s/"; - private final static String URL_CURRENCY_PAIRS = "https://api.mintpal.com/market/summary/"; - - public MintPal() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTicker(int requestId, String responseString, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - parseTickerFromJsonObject(requestId, new JSONArray(responseString).getJSONObject(0), ticker, checkerInfo); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.vol = jsonObject.getDouble("24hvol"); - ticker.high = jsonObject.getDouble("24hhigh"); - ticker.low = jsonObject.getDouble("24hlow"); - ticker.last = jsonObject.getDouble("last_price"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairs(int requestId, String responseString, List pairs) throws Exception { - final JSONArray jsonArray = new JSONArray(responseString); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD, - Currency.EUR, - Currency.CAD, - Currency.GBP, - Currency.CHF, - Currency.RUB, - Currency.AUD, - Currency.SEK, - Currency.DKK, - Currency.HKD, - Currency.PLN, - Currency.CNY, - Currency.SGD, - Currency.THB, - Currency.NZD, - Currency.JPY - }); - } - - public Mtgox() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject dataObject = jsonObject.getJSONObject("data"); - - ticker.bid = getPriceValueFromObject(dataObject, "buy"); - ticker.ask = getPriceValueFromObject(dataObject, "sell"); - ticker.vol = getPriceValueFromObject(dataObject, "vol"); - ticker.high = getPriceValueFromObject(dataObject, "high"); - ticker.low = getPriceValueFromObject(dataObject, "low"); - ticker.last = getPriceValueFromObject(dataObject, "last_local"); - ticker.timestamp = dataObject.getLong("now")/TimeUtils.NANOS_IN_MILLIS; - } - - private double getPriceValueFromObject(JSONObject jsonObject, String key) throws Exception { - final JSONObject innerObject = jsonObject.getJSONObject(key); - return innerObject.getDouble("value"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/NegocieCoins.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/NegocieCoins.java deleted file mode 100644 index fa004f5a..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/NegocieCoins.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class NegocieCoins extends Market { - - private final static String NAME = "NegocieCoins"; - private final static String TTS_NAME = "Negocie Coins"; - private final static String URL = "https://broker.negociecoins.com.br/api/v3/%1$s%2$s/ticker"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.BRL - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.BRL - }); - } - - public NegocieCoins() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("buy"); - ticker.ask = jsonObject.getDouble("sell"); - ticker.vol = jsonObject.getDouble("vol"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Nocks.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Nocks.java deleted file mode 100644 index 2a52a03c..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Nocks.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONArray; -import org.json.JSONObject; - -import java.util.List; - -public class Nocks extends Market { - - private final static String NAME = "Nocks"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.nocks.com/api/v2/trade-market/%1$s"; - private final static String URL_CURRENCY_PAIRS = "https://api.nocks.com/api/v2/trade-market"; - - public Nocks() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject dataObject = jsonObject.getJSONObject("data"); - - ticker.bid = getDoubleFromJsonObject(dataObject, "buy"); - ticker.ask = getDoubleFromJsonObject(dataObject, "sell"); - ticker.vol = getDoubleFromJsonObject(dataObject, "volume"); - ticker.high = getDoubleFromJsonObject(dataObject, "high"); - ticker.low = getDoubleFromJsonObject(dataObject, "low"); - ticker.last = getDoubleFromJsonObject(dataObject, "last"); - } - - private double getDoubleFromJsonObject(JSONObject jsonObject, String key) throws Exception { - return jsonObject.getJSONObject(key).getDouble("amount"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray resultJsonArray = jsonObject.getJSONArray("data"); - - for(int i=0; i= 2) { - pairs.add(new CurrencyPairInfo( - currencies[0], - currencies[1], - pairId)); - } - } - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/OKCoinFutures.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/OKCoinFutures.java deleted file mode 100644 index 5e1fcd55..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/OKCoinFutures.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -import org.json.JSONObject; - -import com.mobnetic.coinguardian.model.CheckerInfo; -import com.mobnetic.coinguardian.model.Futures; -import com.mobnetic.coinguardian.model.FuturesMarket; -import com.mobnetic.coinguardian.model.Ticker; -import com.mobnetic.coinguardian.model.currency.Currency; -import com.mobnetic.coinguardian.model.currency.VirtualCurrency; - -public class OKCoinFutures extends FuturesMarket { - - private final static String NAME = "OKCoin Futures"; - private final static String TTS_NAME = "OK Coin Futures"; - private final static String URL = "https://www.okex.com/api/v1/future_ticker.do?symbol=%1$s_%2$s&contract_type=%3$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - // Currency.CNY, //At this time (2015-09-17) no API exist for www.okcoin.cn. Check https://www.okcoin.cn/about/rest_api.do - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - // Currency.CNY, //At this time (2015-09-17) no API exist for www.okcoin.cn. Check https://www.okcoin.cn/about/rest_api.do - Currency.USD - }); - } - private final static int[] CONTRACT_TYPES = new int[] { - Futures.CONTRACT_TYPE_WEEKLY, - Futures.CONTRACT_TYPE_BIWEEKLY, - Futures.CONTRACT_TYPE_QUARTERLY - }; - - public OKCoinFutures() { - super(NAME, TTS_NAME, CURRENCY_PAIRS, CONTRACT_TYPES); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo, int contractType) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase(), getContractTypeString(contractType)); - } - - private String getContractTypeString(int contractType) { - switch (contractType) { - default: - case Futures.CONTRACT_TYPE_WEEKLY: return "this_week"; - case Futures.CONTRACT_TYPE_BIWEEKLY: return "next_week"; - case Futures.CONTRACT_TYPE_QUARTERLY: return "quarter"; - } - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject tickerJsonObject = jsonObject.getJSONObject("ticker"); - - ticker.bid = tickerJsonObject.getDouble("buy"); - ticker.ask = tickerJsonObject.getDouble("sell"); - ticker.vol = tickerJsonObject.getDouble("vol"); - ticker.high = tickerJsonObject.getDouble("high"); - ticker.low = tickerJsonObject.getDouble("low"); - ticker.last = tickerJsonObject.getDouble("last"); - } - -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Okcoin.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Okcoin.java deleted file mode 100644 index 7144c5cf..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Okcoin.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class Okcoin extends Market { - - private final static String NAME = "OKCoin"; - private final static String TTS_NAME = "OK Coin"; - private final static String URL_USD = "https://www.okcoin.com/api/v1/ticker.do?symbol=%1$s_%2$s"; - private final static String URL_CNY = "https://www.okcoin.cn/api/v1/ticker.do?symbol=%1$s_%2$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.CNY, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.CNY, - Currency.USD - }); - } - - public Okcoin() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - if(Currency.USD.equals(checkerInfo.getCurrencyCounter())) { - return String.format(URL_USD, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } else { - return String.format(URL_CNY, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject tickerJsonObject = jsonObject.getJSONObject("ticker"); - - ticker.bid = tickerJsonObject.getDouble("buy"); - ticker.ask = tickerJsonObject.getDouble("sell"); - ticker.vol = tickerJsonObject.getDouble("vol"); - ticker.high = tickerJsonObject.getDouble("high"); - ticker.low = tickerJsonObject.getDouble("low"); - ticker.last = tickerJsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/OmniTrade.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/OmniTrade.java deleted file mode 100644 index ebfff430..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/OmniTrade.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONArray; -import org.json.JSONObject; - -import java.util.List; - -public class OmniTrade extends Market { - - private final static String NAME = "OmniTrade"; - private final static String TTS_NAME = "Omni Trade"; - private final static String URL = "https://omnitrade.io/api/v2/tickers/%1$s"; - private final static String URL_CURRENCY_PAIRS = "https://omnitrade.io/api/v2/markets"; - - public OmniTrade() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject dataJsonObject = jsonObject.getJSONObject("ticker"); - - ticker.bid = dataJsonObject.getDouble("buy"); - ticker.ask = dataJsonObject.getDouble("sell"); - ticker.low = dataJsonObject.getDouble("low"); - ticker.high = dataJsonObject.getDouble("high"); - ticker.last = dataJsonObject.getDouble("last"); - ticker.vol = dataJsonObject.getDouble("vol"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairs(int requestId, String responseString, List pairs) throws Exception { - final JSONArray pairsArray = new JSONArray(responseString); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.TRY - }); - } - - public Paribu() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject dataJsonObject = jsonObject.getJSONObject("BTC_TL"); - - ticker.bid = ParseUtils.getDoubleFromString(dataJsonObject, "highestBid"); - ticker.ask = ParseUtils.getDoubleFromString(dataJsonObject, "lowestAsk"); - ticker.vol = ParseUtils.getDoubleFromString(dataJsonObject, "volume"); - ticker.high = ParseUtils.getDoubleFromString(dataJsonObject, "high24hr"); - ticker.low = ParseUtils.getDoubleFromString(dataJsonObject, "low24hr"); - ticker.last = ParseUtils.getDoubleFromString(dataJsonObject, "last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Paymium.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Paymium.java deleted file mode 100644 index d50f6f26..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Paymium.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -import org.json.JSONArray; -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; - -public class Paymium extends Market { - - private final static String NAME = "Paymium"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://paymium.com/api/v1/data/eur/ticker"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.EUR - }); - } - - public Paymium() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("price"); - } - - @Override - protected String parseErrorFromJsonObject(int requestId, JSONObject jsonObject, CheckerInfo checkerInfo) throws Exception { - final StringBuilder stringBuilder = new StringBuilder(); - final JSONArray errorsArray = jsonObject.getJSONArray("errors"); - for(int i=0; i pairs) throws Exception { - final JSONArray pairNames = jsonObject.names(); - - for(int i=0; i pairs) throws Exception { - final JSONArray pairingsArray = jsonObject.getJSONArray("pairings"); - final String currencyCounter = jsonObject.getString("from"); - - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BCH, new String[]{ - Currency.CAD - }); - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.CAD, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.BTG, new String[]{ - Currency.CAD - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - VirtualCurrency.BTC, - Currency.CAD - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.CAD - }); - } - - public QuadrigaCX() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - ticker.timestamp = jsonObject.getLong("timestamp"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Quoine.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Quoine.java deleted file mode 100644 index 4d550f46..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Quoine.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; - -import org.json.JSONArray; -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; - -public class Quoine extends Market { - - private final static String NAME = "Quoine"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.quoine.com/products/code/CASH/%1$s"; - private final static String URL_CURRENCY_PAIRS = "https://api.quoine.com/products/"; - - public Quoine() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("market_bid"); - ticker.ask = jsonObject.getDouble("market_ask"); - ticker.vol = jsonObject.getDouble("volume_24h"); - ticker.high = jsonObject.getDouble("high_market_ask"); - ticker.low = jsonObject.getDouble("low_market_bid"); - ticker.last = jsonObject.getDouble("last_traded_price"); - } - - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairs(int requestId, String responseString, List pairs) throws Exception { - final JSONArray pairsJsonArray = new JSONArray(responseString); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.ARS - }); - } - - public Ripio() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject ratesJsonObject = jsonObject.getJSONObject("rates"); - ticker.bid = ratesJsonObject.getDouble("ARS_SELL"); // reversed - ticker.ask = ratesJsonObject.getDouble("ARS_BUY"); // reversed - ticker.last = ticker.ask; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/SatoshiTango.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/SatoshiTango.java deleted file mode 100644 index aab30309..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/SatoshiTango.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class SatoshiTango extends Market { - - private final static String NAME = "SatoshiTango"; - private final static String TTS_NAME = "Satoshi Tango"; - private final static String URL = "https://api.satoshitango.com/v2/ticker"; - - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD, - Currency.ARS, - Currency.EUR - }); - } - - public SatoshiTango() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - String currencyCode = checkerInfo.getCurrencyCounterLowerCase() + checkerInfo.getCurrencyBaseLowerCase(); - - final JSONObject tickerJsonObject = jsonObject.getJSONObject("data"); - final JSONObject buyObject = tickerJsonObject.getJSONObject("compra"); - final JSONObject sellObject = tickerJsonObject.getJSONObject("venta"); - - ticker.ask = buyObject.getDouble(currencyCode); - ticker.bid = sellObject.getDouble(currencyCode); - ticker.last = ticker.ask; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/ShapeShift.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/ShapeShift.java deleted file mode 100644 index f2c0f14b..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/ShapeShift.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.ArrayList; -import java.util.List; - -import org.json.JSONArray; -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 ShapeShift extends Market { - - private final static String NAME = "ShapeShift"; - private final static String TTS_NAME = "Shape Shift"; - private final static String URL = "https://shapeshift.io/rate/%1$s_%2$s"; - private final static String URL_CURRENCY_PAIRS = "https://shapeshift.io/getcoins"; - - public ShapeShift() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.last = ParseUtils.getDoubleFromString(jsonObject, "rate"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray jsonCoinNames = jsonObject.names(); - final List availableCoinNames = new ArrayList(jsonCoinNames.length()); - for(int i=0; i pairs) throws Exception { - final JSONArray marketsJsonArray = jsonObject.getJSONArray("markets"); - - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.VEF - }); - } - - public SurBitcoin() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("buy"); - ticker.ask = jsonObject.getDouble("sell"); - ticker.vol = jsonObject.getDouble("vol"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/SurBtc.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/SurBtc.java deleted file mode 100644 index d3c135d8..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/SurBtc.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONArray; -import org.json.JSONObject; - -import java.util.List; - -/** - * Implements SurBTC connection to the API - * @author Eduardo Laguna - */ -public class SurBtc extends Market { - - private final static String NAME = "SurBtc"; - private final static String TTS_NAME = "Sur BTC"; - private final static String URL = "https://www.surbtc.com/api/v2/markets/%1$s/ticker.json"; - private final static String URL_CURRENCY_PAIRS = "https://www.surbtc.com/api/v2/markets.json"; - - public SurBtc() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject tickerJsonObject = jsonObject.getJSONObject("ticker"); - ticker.bid = tickerJsonObject.getJSONArray("max_bid").getDouble(0); - ticker.ask = tickerJsonObject.getJSONArray("min_ask").getDouble(0); - ticker.vol = tickerJsonObject.getJSONArray("volume").getDouble(0); - ticker.last = tickerJsonObject.getJSONArray("last_price").getDouble(0); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray marketsJsonArray = jsonObject.getJSONArray("markets"); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.EUR, - Currency.USD, - VirtualCurrency.XRP - }); - CURRENCY_PAIRS.put(Currency.EUR, new String[]{ - VirtualCurrency.DOGE, - VirtualCurrency.XRP - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - VirtualCurrency.BTC, - Currency.EUR, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.NMC, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.PPC, new String[]{ - Currency.EUR - }); - CURRENCY_PAIRS.put(Currency.USD, new String[]{ - VirtualCurrency.XRP - }); - } - - public TheRock() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - String pairId = checkerInfo.getCurrencyPairId(); - if (pairId == null) { - pairId = fixCurrency(checkerInfo.getCurrencyBase()) + fixCurrency(checkerInfo.getCurrencyCounter()); - } - return String.format(URL, pairId); - } - - private String fixCurrency(String currency) { - if(VirtualCurrency.DOGE.equals(currency)) { - return VirtualCurrency.DOG; - } - return currency; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray fundsJsonArray = jsonObject.getJSONArray("funds"); - for (int i = 0; i < fundsJsonArray.length(); i++) { - final JSONObject pairJsonObject = fundsJsonArray.getJSONObject(i); - pairs.add(new CurrencyPairInfo( - pairJsonObject.getString("trade_currency"), - pairJsonObject.getString("base_currency"), - pairJsonObject.getString("id")) - ); - } - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Unisend.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Unisend.java deleted file mode 100644 index 881d7d84..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Unisend.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class Unisend extends Market { - - private final static String NAME = "Unisend"; - private final static String TTS_NAME = "Uni send"; - private final static String URL = "https://www.unisend.com/api/price/ar/ars_btc"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.ARS - }); - } - - public Unisend() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject pricesJsonObject = jsonObject.getJSONObject("prices"); - ticker.bid = pricesJsonObject.getDouble("sell"); // reversed! - ticker.ask = pricesJsonObject.getDouble("buy"); // reversed! - ticker.last = ticker.ask; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Unknown.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Unknown.java deleted file mode 100644 index 30c5ba67..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Unknown.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -import com.mobnetic.coinguardian.model.CheckerInfo; -import com.mobnetic.coinguardian.model.Market; -import com.mobnetic.coinguardian.model.currency.VirtualCurrency; -import com.mobnetic.coinguardiandatamodule.R; - -public class Unknown extends Market { - - private final static String NAME = "UNKNOWN"; - private final static String TTS_NAME = NAME; - private final static String URL = ""; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ VirtualCurrency.BTC }); - } - - public Unknown() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public int getCautionResId() { - return R.string.market_caution_unknown; - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Unocoin.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Unocoin.java deleted file mode 100644 index bedb3d3c..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Unocoin.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class Unocoin extends Market { - - private final static String NAME = "Unocoin"; - private final static String TTS_NAME = "Uno Coin"; - private final static String URL = "https://www.unocoin.com/trade?all"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.INR - }); - } - - public Unocoin() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("sell"); - ticker.ask = jsonObject.getDouble("buy"); - ticker.last = jsonObject.getDouble("avg"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Uphold.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Uphold.java deleted file mode 100644 index 9469391b..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Uphold.java +++ /dev/null @@ -1,71 +0,0 @@ -// @joseccnet contribution. -package com.mobnetic.coinguardian.model.market; - -import java.util.List; - -import org.json.JSONArray; -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 Uphold extends Market { - - private final static String NAME = "Uphold"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.uphold.com/v0/ticker/%1$s"; - private final static String URL_CURRENCY_PAIRS = "https://api.uphold.com/v0/ticker"; - - public Uphold() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = ParseUtils.getDoubleFromString(jsonObject, "bid"); - ticker.ask = ParseUtils.getDoubleFromString(jsonObject, "ask"); - ticker.last = ((ticker.bid+ticker.ask)/2); //This is how Uphold operate on production (as I observed) - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairs(int requestId, String responseString, List pairs) throws Exception { - final JSONArray pairsJsonArray = new JSONArray(responseString); - - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.PKR - }); - - } - - public Urdubit() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("buy"); - ticker.ask = jsonObject.getDouble("sell"); - ticker.vol = jsonObject.getDouble("vol"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - //ticker.timestamp = jsonObject.getLong("timestamp"); - } - -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/VBtc.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/VBtc.java deleted file mode 100644 index 70c874aa..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/VBtc.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class VBtc extends Market { - - private final static String NAME = "VBTC.vn"; - private final static String TTS_NAME = "V BTC"; - private final static String URL = "https://api.blinktrade.com/api/v1/%2$s/ticker?crypto_currency=%1$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.VND - }); - } - - public VBtc() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("buy"); - ticker.ask = jsonObject.getDouble("sell"); - ticker.vol = jsonObject.getDouble("vol"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/VaultOfSatoshi.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/VaultOfSatoshi.java deleted file mode 100644 index aa2e79d9..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/VaultOfSatoshi.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.ArrayList; -import java.util.List; - -import org.json.JSONArray; -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; - -public class VaultOfSatoshi extends Market { - - private final static String NAME = "VaultOfSatoshi"; - private final static String TTS_NAME = "Vault Of Satoshi"; - private final static String URL = "https://api.vaultofsatoshi.com/public/ticker?order_currency=%1$s&payment_currency=%2$s"; - private final static String URL_CURRENCY_PAIRS = "https://api.vaultofsatoshi.com/public/currency"; - - public VaultOfSatoshi() { - super(NAME, TTS_NAME, null); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject dataObject = jsonObject.getJSONObject("data"); - - ticker.vol = getDoubleFromMtgoxFormatObject(dataObject, "volume_1day"); - ticker.high = getDoubleFromMtgoxFormatObject(dataObject, "max_price"); - ticker.low = getDoubleFromMtgoxFormatObject(dataObject, "min_price"); - ticker.last = getDoubleFromMtgoxFormatObject(dataObject, "closing_price"); - ticker.timestamp = dataObject.getLong("date"); - } - - private double getDoubleFromMtgoxFormatObject(JSONObject jsonObject, String key) throws Exception { - final JSONObject innerObject = jsonObject.getJSONObject(key); - return innerObject.getDouble("value"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONArray dataJsonArray = jsonObject.getJSONArray("data"); - final ArrayList virtualCurrencies = new ArrayList(); - final ArrayList currencies = new ArrayList(); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(Currency.GOLD, new String[]{ - VirtualCurrency.BTC - }); - } - - public Vaultoro() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTicker(int requestId, String responseString, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.last = Double.parseDouble(responseString); - } -} \ No newline at end of file diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Vircurex.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Vircurex.java deleted file mode 100644 index 79a75032..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Vircurex.java +++ /dev/null @@ -1,459 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class Vircurex extends Market { - - private final static String NAME = "Vircurex"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://api.vircurex.com/api/get_info_for_1_currency.json?base=%1$s&alt=%2$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.ANC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.DGC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.DOGE, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.DVC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.FRC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.FTC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.I0C, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.IXC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.NMC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.NVC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.NXT, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.PPC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.QRK, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.TRC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.VTC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.WDC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.WDC, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.XPM - }); - CURRENCY_PAIRS.put(VirtualCurrency.XPM, new String[]{ - Currency.USD, - Currency.EUR, - VirtualCurrency.BTC, - VirtualCurrency.ANC, - VirtualCurrency.DGC, - VirtualCurrency.DOGE, - VirtualCurrency.DVC, - VirtualCurrency.FRC, - VirtualCurrency.FTC, - VirtualCurrency.I0C, - VirtualCurrency.IXC, - VirtualCurrency.LTC, - VirtualCurrency.NMC, - VirtualCurrency.NVC, - VirtualCurrency.NXT, - VirtualCurrency.PPC, - VirtualCurrency.QRK, - VirtualCurrency.TRC, - VirtualCurrency.VTC, - VirtualCurrency.WDC, - }); - } - - public Vircurex() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("highest_bid"); - ticker.ask = jsonObject.getDouble("lowest_ask"); - ticker.vol = jsonObject.getDouble("volume"); -// ticker.high; -// ticker.low; - ticker.last = jsonObject.getDouble("last_trade"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Virtex.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Virtex.java deleted file mode 100644 index dd157033..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Virtex.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class Virtex extends Market { - - private final static String NAME = "CaVirtEx"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://cavirtex.com/api2/ticker.json"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.CAD, - VirtualCurrency.LTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - Currency.CAD - }); - } - - public Virtex() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONObject tickerJsonObject = jsonObject.getJSONObject("ticker"); - final JSONObject pairJsonObject = tickerJsonObject.getJSONObject(checkerInfo.getCurrencyBase()+checkerInfo.getCurrencyCounter()); - - if (!pairJsonObject.isNull("buy")) { - ticker.bid = pairJsonObject.getDouble("buy"); - } - if (!pairJsonObject.isNull("sell")) { - ticker.ask = pairJsonObject.getDouble("sell"); - } - if (!pairJsonObject.isNull("volume")) { - ticker.vol = pairJsonObject.getDouble("volume"); - } - if (!pairJsonObject.isNull("high")) { - ticker.high = pairJsonObject.getDouble("high"); - } - if (!pairJsonObject.isNull("low")) { - ticker.low = pairJsonObject.getDouble("low"); - } - ticker.last = pairJsonObject.getDouble("last"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Winkdex.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Winkdex.java deleted file mode 100644 index 18e938f5..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Winkdex.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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; - -public class Winkdex extends Market { - - private final static String NAME = "Winkdex"; - private final static String TTS_NAME = NAME; - private final static String URL = "http://winkdex.com/static/js/stats.js"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.USD - }); - } - - public Winkdex() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.vol = jsonObject.getDouble("volume_btc_24h"); - ticker.high = jsonObject.getDouble("winkdex_high_24h"); - ticker.low = jsonObject.getDouble("winkdex_low_24h"); - ticker.last = jsonObject.getDouble("winkdex_usd"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/YoBit.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/YoBit.java deleted file mode 100644 index d1881f6d..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/YoBit.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -import java.util.List; -import java.util.Locale; - -import org.json.JSONArray; -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.coinguardiandatamodule.R; - -public class YoBit extends Market { - - private final static String NAME = "YoBit"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://yobit.net/api/3/ticker/%1$s"; - private final static String URL_CURRENCY_PAIRS = "https://yobit.net/api/3/info"; - - public YoBit() { - super(NAME, TTS_NAME, null); - } - - @Override - public int getCautionResId() { - return R.string.market_caution_yobit; - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyPairId()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - final JSONArray names = jsonObject.names(); - JSONObject tickerJsonObject = jsonObject.getJSONObject(names.getString(0)); - - ticker.bid = tickerJsonObject.getDouble("sell"); - ticker.ask = tickerJsonObject.getDouble("buy"); - ticker.vol = tickerJsonObject.getDouble("vol"); - ticker.high = tickerJsonObject.getDouble("high"); - ticker.low = tickerJsonObject.getDouble("low"); - ticker.last = tickerJsonObject.getDouble("last"); - ticker.timestamp = tickerJsonObject.getLong("updated"); - } - - // ==================== - // Get currency pairs - // ==================== - @Override - public String getCurrencyPairsUrl(int requestId) { - return URL_CURRENCY_PAIRS; - } - - @Override - protected void parseCurrencyPairsFromJsonObject(int requestId, JSONObject jsonObject, List pairs) throws Exception { - final JSONObject pairsJsonObject = jsonObject.getJSONObject("pairs"); - final JSONArray pairsNames = pairsJsonObject.names(); - for(int i=0; i CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.EUR - }); - } - - public Zaydo() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return URL; - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - 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"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Zebpay.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Zebpay.java deleted file mode 100644 index 0e299617..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/Zebpay.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.mobnetic.coinguardian.model.market; - -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 org.json.JSONObject; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -public class Zebpay extends Market { - - private final static String NAME = "Zebpay"; - private final static String TTS_NAME = "Zeb Pay"; - private final static String URL = "https://www.zebapi.com/api/v1/market/ticker-new/%1$s/%2$s"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap<>(); - - static { - CURRENCY_PAIRS.put(VirtualCurrency.AE, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.BAT, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.BCH, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - VirtualCurrency.TUSD - }); - CURRENCY_PAIRS.put(VirtualCurrency.BTG, new String[]{ - VirtualCurrency.BTC, - VirtualCurrency.TUSD - }); - CURRENCY_PAIRS.put(VirtualCurrency.CMT, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.EOS, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.ETH, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.GNT, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.IOST, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.KNC, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.LTC, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.NCASH, new String[]{ - VirtualCurrency.BTC, - VirtualCurrency.XRP - }); - CURRENCY_PAIRS.put(VirtualCurrency.OMG, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.REP, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.TRX, new String[]{ - VirtualCurrency.BTC, - VirtualCurrency.XRP - }); - CURRENCY_PAIRS.put(VirtualCurrency.XRP, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.ZIL, new String[]{ - VirtualCurrency.BTC - }); - CURRENCY_PAIRS.put(VirtualCurrency.ZRX, new String[]{ - VirtualCurrency.BTC - }); - } - - public Zebpay() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBaseLowerCase(), checkerInfo.getCurrencyCounterLowerCase()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("sell"); - ticker.ask = jsonObject.getDouble("buy"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.last = jsonObject.getDouble("market"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/example/MarketExample.java b/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/example/MarketExample.java deleted file mode 100644 index 34ab3464..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/model/market/example/MarketExample.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.mobnetic.coinguardian.model.market.example; - -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; - -public class MarketExample extends Market { - - private final static String NAME = "Market Example"; - private final static String TTS_NAME = NAME; - private final static String URL = "https://www.marketexample.com/api/%1$s_%2$s/ticker/"; - private final static HashMap CURRENCY_PAIRS = new LinkedHashMap(); - static { - CURRENCY_PAIRS.put(VirtualCurrency.BTC, new String[]{ - Currency.CNY, - Currency.USD - }); - CURRENCY_PAIRS.put(VirtualCurrency.DOGE, new String[]{ - VirtualCurrency.BTC, - Currency.USD - }); - } - - public MarketExample() { - super(NAME, TTS_NAME, CURRENCY_PAIRS); - } - - @Override - public String getUrl(int requestId, CheckerInfo checkerInfo) { - return String.format(URL, checkerInfo.getCurrencyBase(), checkerInfo.getCurrencyCounter()); - } - - @Override - protected void parseTickerFromJsonObject(int requestId, JSONObject jsonObject, Ticker ticker, CheckerInfo checkerInfo) throws Exception { - ticker.bid = jsonObject.getDouble("bid"); - ticker.ask = jsonObject.getDouble("ask"); - ticker.vol = jsonObject.getDouble("volume"); - ticker.high = jsonObject.getDouble("high"); - ticker.low = jsonObject.getDouble("low"); - ticker.last = jsonObject.getDouble("last"); - ticker.timestamp = jsonObject.getLong("timestamp"); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/util/CurrencyPairsMapHelper.java b/dataModule/src/main/java/com/mobnetic/coinguardian/util/CurrencyPairsMapHelper.java deleted file mode 100644 index 672d2d9a..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/util/CurrencyPairsMapHelper.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.mobnetic.coinguardian.util; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; - -import com.mobnetic.coinguardian.model.CurrencyPairInfo; -import com.mobnetic.coinguardian.model.CurrencyPairsListWithDate; - -public class CurrencyPairsMapHelper { - - private long date; - private final HashMap currencyPairs; - private final HashMap currencyPairsIds; - private int pairsCount = 0; - - public CurrencyPairsMapHelper(CurrencyPairsListWithDate currencyPairsListWithDate) { - currencyPairs = new LinkedHashMap(); - currencyPairsIds = new HashMap(); - - if(currencyPairsListWithDate==null) - return; - - date = currencyPairsListWithDate.date; - List sortedPairs = currencyPairsListWithDate.pairs; - pairsCount = sortedPairs.size(); - - HashMap currencyGroupSizes = new HashMap(); - for(CurrencyPairInfo currencyPairInfo : sortedPairs) { - Integer currentCurrencyGroupSize = currencyGroupSizes.get(currencyPairInfo.getCurrencyBase()); - if(currentCurrencyGroupSize==null) { - currentCurrencyGroupSize = 1; - } else { - ++currentCurrencyGroupSize; - } - currencyGroupSizes.put(currencyPairInfo.getCurrencyBase(), currentCurrencyGroupSize); - } - - int currentGroupPositionToInsert = 0; - for(CurrencyPairInfo currencyPairInfo : sortedPairs) { - CharSequence[] currencyGroup = currencyPairs.get(currencyPairInfo.getCurrencyBase()); - if(currencyGroup==null) { - currencyGroup = new CharSequence[currencyGroupSizes.get(currencyPairInfo.getCurrencyBase())]; - currencyPairs.put(currencyPairInfo.getCurrencyBase(), currencyGroup); - currentGroupPositionToInsert = 0; - } else { - ++currentGroupPositionToInsert; - } - currencyGroup[currentGroupPositionToInsert] = currencyPairInfo.getCurrencyCounter(); - - if(currencyPairInfo.getCurrencyPairId()!=null) { - currencyPairsIds.put( - createCurrencyPairKey(currencyPairInfo.getCurrencyBase(), currencyPairInfo.getCurrencyCounter()), - currencyPairInfo.getCurrencyPairId()); - } - } - } - - public long getDate() { - return date; - } - - public HashMap getCurrencyPairs() { - return currencyPairs; - } - - public String getCurrencyPairId(String currencyBase, String currencyCounter) { - return currencyPairsIds.get(createCurrencyPairKey(currencyBase, currencyCounter)); - } - - public int getPairsCount() { - return pairsCount; - } - - private String createCurrencyPairKey(String currencyBase, String currencyCounter) { - return String.format("%1$s_%2$s", currencyBase, currencyCounter); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/util/CurrencyUtils.java b/dataModule/src/main/java/com/mobnetic/coinguardian/util/CurrencyUtils.java deleted file mode 100644 index f6372cd3..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/util/CurrencyUtils.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.mobnetic.coinguardian.util; - -import com.mobnetic.coinguardian.model.CurrencySubunit; -import com.mobnetic.coinguardian.model.CurrencySubunitsMap; -import com.mobnetic.coinguardian.model.currency.CurrenciesSubunits; -import com.mobnetic.coinguardian.model.currency.CurrencySymbols; - -public class CurrencyUtils { - - public static String getCurrencySymbol(String currency) { - return CurrencySymbols.CURRENCY_SYMBOLS.containsKey(currency) ? CurrencySymbols.CURRENCY_SYMBOLS.get(currency) : currency; - } - - public static CurrencySubunit getCurrencySubunit(String currency, long subunitToUnit) { - if(CurrenciesSubunits.CURRENCIES_SUBUNITS.containsKey(currency)) { - CurrencySubunitsMap subunits = CurrenciesSubunits.CURRENCIES_SUBUNITS.get(currency); - if(subunits.containsKey(subunitToUnit)) - return subunits.get(subunitToUnit); - } - - return new CurrencySubunit(currency, 1); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/util/FormatUtilsBase.java b/dataModule/src/main/java/com/mobnetic/coinguardian/util/FormatUtilsBase.java deleted file mode 100644 index 437e9945..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/util/FormatUtilsBase.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.mobnetic.coinguardian.util; - -import java.text.DecimalFormat; -import java.util.Date; - -import android.content.Context; -import android.text.format.DateFormat; -import android.text.format.DateUtils; - -import com.mobnetic.coinguardian.model.CurrencySubunit; - -public class FormatUtilsBase { - - // ==================== - // Double formatting - // ==================== - private final static DecimalFormat FORMAT_TWO_DECIMAL = new DecimalFormat("0.00"); - private final static DecimalFormat FORMAT_FIVE_SIGNIFICANT_AT_MOST = new DecimalFormat("@#####"); - private final static DecimalFormat FORMAT_EIGHT_SIGNIFICANT_AT_MOST = new DecimalFormat("@#######"); - - // ==================== - // Format methods - // ==================== - public static String formatDouble(double value, boolean isPrice) { - return formatDouble(value<1 ? FORMAT_FIVE_SIGNIFICANT_AT_MOST : FORMAT_TWO_DECIMAL, value); - } - - public static String formatDoubleWithFiveMax(double value) { - return formatDouble(FORMAT_FIVE_SIGNIFICANT_AT_MOST, value); - } - - protected static String formatDoubleWithEightMax(double value) { - return formatDouble(FORMAT_EIGHT_SIGNIFICANT_AT_MOST, value); - } - - protected final static String formatDouble(DecimalFormat decimalFormat, double value) { - synchronized (decimalFormat) { - try { - return decimalFormat.format(value); - } catch (Exception e) { - e.printStackTrace(); - } - - return String.valueOf(value); - } - } - - // ==================== - // Price formatting - // ==================== - public static String formatPriceWithCurrency(double price, CurrencySubunit subunitDst) { - return formatPriceWithCurrency(price, subunitDst, true); - } - - protected static String formatPriceWithCurrency(double price, CurrencySubunit subunitDst, boolean showCurrencyDst) { - String priceString = formatPriceValueForSubunit(price, subunitDst, false, false); - if(showCurrencyDst) { - priceString = formatPriceWithCurrency(priceString, subunitDst.name); - } - - return priceString; - } - - public static String formatPriceWithCurrency(double value, String currency) { - return formatPriceWithCurrency(formatDouble(value, true), currency); - } - - public static String formatPriceWithCurrency(String priceString, String currency) { - return priceString+" "+CurrencyUtils.getCurrencySymbol(currency); - } - - public static String formatPriceValueForSubunit(double price, CurrencySubunit subunitDst, boolean forceInteger, boolean skipNoSignificantDecimal) { - price *= subunitDst.subunitToUnit; - if(!subunitDst.allowDecimal || forceInteger) - return String.valueOf((long)(price+0.5f)); - else if(skipNoSignificantDecimal) - return formatDoubleWithEightMax(price); - else - return formatDouble(price, true); - } - - // ==================== - // Date && Time formatting - // ==================== - public static String formatSameDayTimeOrDate(Context context, long time) { - if (DateUtils.isToday(time)) { - return DateFormat.getTimeFormat(context).format(new Date(time)); - } else { - return DateFormat.getDateFormat(context).format(new Date(time)); - } - } - - public static String formatDateTime(Context context, long time) { - final Date date = new Date(time); - return DateFormat.getTimeFormat(context).format(date)+", "+DateFormat.getDateFormat(context).format(date); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/util/MarketsConfigUtils.java b/dataModule/src/main/java/com/mobnetic/coinguardian/util/MarketsConfigUtils.java deleted file mode 100644 index 7d71792c..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/util/MarketsConfigUtils.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mobnetic.coinguardian.util; - -import java.util.ArrayList; - -import com.mobnetic.coinguardian.config.MarketsConfig; -import com.mobnetic.coinguardian.model.Market; -import com.mobnetic.coinguardian.model.market.Unknown; - -public class MarketsConfigUtils { - - private final static Market UNKNOWN = new Unknown(); - - public static Market getMarketById(int id) { - synchronized (MarketsConfig.MARKETS) { - if(id>=0 && id(MarketsConfig.MARKETS.values()).get(id); - } - } - return UNKNOWN; - } - - public static Market getMarketByKey(String key) { - synchronized (MarketsConfig.MARKETS) { - if(MarketsConfig.MARKETS.containsKey(key)) - return MarketsConfig.MARKETS.get(key); - } - return UNKNOWN; - } - - public static int getMarketIdByKey(String key) { - int i=0; - for(Market market : MarketsConfig.MARKETS.values()){ - if(market.key.equals(key)) - return i; - ++i; - } - - return 0; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/util/ParseUtils.java b/dataModule/src/main/java/com/mobnetic/coinguardian/util/ParseUtils.java deleted file mode 100644 index 0b6bf48b..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/util/ParseUtils.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.mobnetic.coinguardian.util; - -import org.json.JSONException; -import org.json.JSONObject; - -public class ParseUtils { - - public static double getDoubleFromString(JSONObject jsonObject, String name) throws NumberFormatException, JSONException { - return Double.parseDouble(jsonObject.getString(name)); - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/util/TimeUtils.java b/dataModule/src/main/java/com/mobnetic/coinguardian/util/TimeUtils.java deleted file mode 100644 index 7b60eac8..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/util/TimeUtils.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.mobnetic.coinguardian.util; - -public class TimeUtils { - - public final static long NANOS_IN_MILLIS = 1000; - public final static long MILLIS_IN_SECOND = 1000; - public final static long MILLIS_IN_MINUTE = 60*MILLIS_IN_SECOND; - public final static long MILLIS_IN_HOUR = 60*MILLIS_IN_MINUTE; - public final static long MILLIS_IN_DAY = 24*MILLIS_IN_HOUR; - private final static long MILLIS_IN_YEAR = 365*MILLIS_IN_DAY; - - public static long parseTimeToMillis(long time) { - if(time5000*MILLIS_IN_YEAR) - return time/1000; - return time; - } -} diff --git a/dataModule/src/main/java/com/mobnetic/coinguardian/util/XmlParserUtils.java b/dataModule/src/main/java/com/mobnetic/coinguardian/util/XmlParserUtils.java deleted file mode 100644 index dd04e89d..00000000 --- a/dataModule/src/main/java/com/mobnetic/coinguardian/util/XmlParserUtils.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.mobnetic.coinguardian.util; - -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -public class XmlParserUtils { - - public static Node getFirstElementByTagName(Document doc, String name) { - NodeList nodes = doc.getElementsByTagName(name); - if(nodes!=null && nodes.getLength()>0) - return nodes.item(0); - return null; - } - - public static double getDoubleNodeValue(Node node) throws Exception { - return Double.parseDouble(getTextNodeValue(node)); - } - - public static String getTextNodeValue(Node node) throws Exception { - Node child; - if (node != null) { - if (node.hasChildNodes()) { - child = node.getFirstChild(); - while(child != null) { - if (child.getNodeType() == Node.TEXT_NODE) { - return child.getNodeValue(); - } - child = child.getNextSibling(); - } - } - } - return ""; - } -} diff --git a/dataModuleTester/build.gradle b/dataModuleTester/build.gradle index d86e881f..d0f85ddb 100644 --- a/dataModuleTester/build.gradle +++ b/dataModuleTester/build.gradle @@ -1,11 +1,12 @@ apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' android { compileSdkVersion 28 buildToolsVersion "29.0.2" defaultConfig { - applicationId "com.mobnetic.coinguardiandatamodule.tester" + applicationId "com.aneonex.bitcoinchecker.datamodule.tester" minSdkVersion 26 targetSdkVersion 28 } @@ -22,5 +23,9 @@ dependencies { implementation project(':dataModule') implementation 'com.google.code.gson:gson:2.6.2' implementation 'com.android.volley:volley:1.1.0' + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" // compile files('libs/volley.jar') } +repositories { + mavenCentral() +} diff --git a/dataModuleTester/src/main/AndroidManifest.xml b/dataModuleTester/src/main/AndroidManifest.xml index c3d71231..72088860 100644 --- a/dataModuleTester/src/main/AndroidManifest.xml +++ b/dataModuleTester/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ @@ -15,7 +15,7 @@ android:label="@string/app_name" android:theme="@style/AppTheme" > - diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/MainActivity.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/MainActivity.java similarity index 88% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/MainActivity.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/MainActivity.java index 4bd50e9b..9b4915bb 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/MainActivity.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/MainActivity.java @@ -1,4 +1,4 @@ -package com.mobnetic.coinguardiandatamodule.tester; +package com.aneonex.bitcoinchecker.tester; import android.app.Activity; import android.os.Bundle; @@ -18,24 +18,24 @@ import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.VolleyError; -import com.mobnetic.coinguardian.config.MarketsConfig; -import com.mobnetic.coinguardian.model.CheckerInfo; -import com.mobnetic.coinguardian.model.Futures; -import com.mobnetic.coinguardian.model.FuturesMarket; -import com.mobnetic.coinguardian.model.Market; -import com.mobnetic.coinguardian.model.Ticker; -import com.mobnetic.coinguardian.util.CurrencyPairsMapHelper; -import com.mobnetic.coinguardian.util.FormatUtilsBase; -import com.mobnetic.coinguardian.util.MarketsConfigUtils; -import com.mobnetic.coinguardiandatamodule.tester.dialog.DynamicCurrencyPairsDialog; -import com.mobnetic.coinguardiandatamodule.tester.util.CheckErrorsUtils; -import com.mobnetic.coinguardiandatamodule.tester.util.HttpsHelper; -import com.mobnetic.coinguardiandatamodule.tester.util.MarketCurrencyPairsStore; -import com.mobnetic.coinguardiandatamodule.tester.volley.CheckerErrorParsedError; -import com.mobnetic.coinguardiandatamodule.tester.volley.CheckerVolleyMainRequest; -import com.mobnetic.coinguardiandatamodule.tester.volley.CheckerVolleyMainRequest.TickerWrapper; -import com.mobnetic.coinguardiandatamodule.tester.volley.generic.ResponseErrorListener; -import com.mobnetic.coinguardiandatamodule.tester.volley.generic.ResponseListener; +import com.aneonex.bitcoinchecker.datamodule.config.MarketsConfig; +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.Market; +import com.aneonex.bitcoinchecker.datamodule.model.Ticker; +import com.aneonex.bitcoinchecker.datamodule.util.CurrencyPairsMapHelper; +import com.aneonex.bitcoinchecker.datamodule.util.FormatUtilsBase; +import com.aneonex.bitcoinchecker.datamodule.util.MarketsConfigUtils; +import com.aneonex.bitcoinchecker.tester.dialog.DynamicCurrencyPairsDialog; +import com.aneonex.bitcoinchecker.tester.util.CheckErrorsUtils; +import com.aneonex.bitcoinchecker.tester.util.HttpsHelper; +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.generic.ResponseErrorListener; +import com.aneonex.bitcoinchecker.tester.volley.generic.ResponseListener; import java.util.HashMap; import java.util.Map; @@ -166,7 +166,7 @@ private int getSelectedContractType(Market market) { if (market instanceof FuturesMarket) { final FuturesMarket futuresMarket = (FuturesMarket) market; int selection = futuresContractTypeSpinner.getSelectedItemPosition(); - return futuresMarket.contractTypes[selection]; + return futuresMarket.getContractTypes()[selection]; } return Futures.CONTRACT_TYPE_WEEKLY; } @@ -231,9 +231,9 @@ private void refreshFuturesContractTypeSpinner(Market market) { SpinnerAdapter spinnerAdapter = null; if (market instanceof FuturesMarket) { final FuturesMarket futuresMarket = (FuturesMarket)market; - CharSequence[] entries = new CharSequence[futuresMarket.contractTypes.length]; - for (int i = 0; i(this, android.R.layout.simple_spinner_dropdown_item, entries); diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/dialog/DynamicCurrencyPairsDialog.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/dialog/DynamicCurrencyPairsDialog.java similarity index 87% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/dialog/DynamicCurrencyPairsDialog.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/dialog/DynamicCurrencyPairsDialog.java index da5687ef..04b63916 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/dialog/DynamicCurrencyPairsDialog.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/dialog/DynamicCurrencyPairsDialog.java @@ -1,4 +1,4 @@ -package com.mobnetic.coinguardiandatamodule.tester.dialog; +package com.aneonex.bitcoinchecker.tester.dialog; import java.util.Map; @@ -14,15 +14,15 @@ import com.android.volley.NetworkResponse; import com.android.volley.RequestQueue; import com.android.volley.VolleyError; -import com.mobnetic.coinguardian.model.Market; -import com.mobnetic.coinguardian.util.CurrencyPairsMapHelper; -import com.mobnetic.coinguardian.util.FormatUtilsBase; -import com.mobnetic.coinguardiandatamodule.tester.R; -import com.mobnetic.coinguardiandatamodule.tester.util.CheckErrorsUtils; -import com.mobnetic.coinguardiandatamodule.tester.util.HttpsHelper; -import com.mobnetic.coinguardiandatamodule.tester.volley.DynamicCurrencyPairsVolleyMainRequest; -import com.mobnetic.coinguardiandatamodule.tester.volley.generic.ResponseErrorListener; -import com.mobnetic.coinguardiandatamodule.tester.volley.generic.ResponseListener; +import com.aneonex.bitcoinchecker.datamodule.model.Market; +import com.aneonex.bitcoinchecker.datamodule.util.CurrencyPairsMapHelper; +import com.aneonex.bitcoinchecker.datamodule.util.FormatUtilsBase; +import com.aneonex.bitcoinchecker.tester.R; +import com.aneonex.bitcoinchecker.tester.util.CheckErrorsUtils; +import com.aneonex.bitcoinchecker.tester.util.HttpsHelper; +import com.aneonex.bitcoinchecker.tester.volley.DynamicCurrencyPairsVolleyMainRequest; +import com.aneonex.bitcoinchecker.tester.volley.generic.ResponseErrorListener; +import com.aneonex.bitcoinchecker.tester.volley.generic.ResponseListener; public abstract class DynamicCurrencyPairsDialog extends AlertDialog implements OnDismissListener { diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/util/CheckErrorsUtils.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/util/CheckErrorsUtils.java similarity index 96% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/util/CheckErrorsUtils.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/util/CheckErrorsUtils.java index cb4ccfc6..d632f28a 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/util/CheckErrorsUtils.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/util/CheckErrorsUtils.java @@ -1,4 +1,4 @@ -package com.mobnetic.coinguardiandatamodule.tester.util; +package com.aneonex.bitcoinchecker.tester.util; import java.io.PrintWriter; import java.io.StringWriter; @@ -14,7 +14,7 @@ import com.android.volley.ServerError; import com.android.volley.TimeoutError; import com.android.volley.VolleyError; -import com.mobnetic.coinguardiandatamodule.tester.R; +import com.aneonex.bitcoinchecker.tester.R; public class CheckErrorsUtils { diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/util/HttpsHelper.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/util/HttpsHelper.java similarity index 95% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/util/HttpsHelper.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/util/HttpsHelper.java index 55865e39..3c2c35e8 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/util/HttpsHelper.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/util/HttpsHelper.java @@ -1,4 +1,4 @@ -package com.mobnetic.coinguardiandatamodule.tester.util; +package com.aneonex.bitcoinchecker.tester.util; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/util/MarketCurrencyPairsStore.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/util/MarketCurrencyPairsStore.java similarity index 91% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/util/MarketCurrencyPairsStore.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/util/MarketCurrencyPairsStore.java index fe347d3d..2ac7330c 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/util/MarketCurrencyPairsStore.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/util/MarketCurrencyPairsStore.java @@ -1,10 +1,10 @@ -package com.mobnetic.coinguardiandatamodule.tester.util; +package com.aneonex.bitcoinchecker.tester.util; import android.content.Context; import android.content.SharedPreferences; import com.google.gson.Gson; -import com.mobnetic.coinguardian.model.CurrencyPairsListWithDate; +import com.aneonex.bitcoinchecker.datamodule.model.CurrencyPairsListWithDate; public class MarketCurrencyPairsStore { diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/CheckerErrorParsedError.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/CheckerErrorParsedError.java similarity index 85% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/CheckerErrorParsedError.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/CheckerErrorParsedError.java index ef3cfa44..1e224752 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/CheckerErrorParsedError.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/CheckerErrorParsedError.java @@ -1,4 +1,4 @@ -package com.mobnetic.coinguardiandatamodule.tester.volley; +package com.aneonex.bitcoinchecker.tester.volley; import com.android.volley.ParseError; diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/CheckerVolleyMainRequest.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/CheckerVolleyMainRequest.java similarity index 84% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/CheckerVolleyMainRequest.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/CheckerVolleyMainRequest.java index 4c56ee1c..3b0c2341 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/CheckerVolleyMainRequest.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/CheckerVolleyMainRequest.java @@ -1,4 +1,4 @@ -package com.mobnetic.coinguardiandatamodule.tester.volley; +package com.aneonex.bitcoinchecker.tester.volley; import java.util.Map; @@ -8,11 +8,11 @@ import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.toolbox.RequestFuture; -import com.mobnetic.coinguardian.model.CheckerInfo; -import com.mobnetic.coinguardian.model.Market; -import com.mobnetic.coinguardian.model.Ticker; -import com.mobnetic.coinguardiandatamodule.tester.volley.CheckerVolleyMainRequest.TickerWrapper; -import com.mobnetic.coinguardiandatamodule.tester.volley.generic.GenericCheckerVolleyRequest; +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo; +import com.aneonex.bitcoinchecker.datamodule.model.Market; +import com.aneonex.bitcoinchecker.datamodule.model.Ticker; +import com.aneonex.bitcoinchecker.tester.volley.CheckerVolleyMainRequest.TickerWrapper; +import com.aneonex.bitcoinchecker.tester.volley.generic.GenericCheckerVolleyRequest; public class CheckerVolleyMainRequest extends GenericCheckerVolleyRequest { diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/CheckerVolleyNextRequest.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/CheckerVolleyNextRequest.java similarity index 69% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/CheckerVolleyNextRequest.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/CheckerVolleyNextRequest.java index 9fc871b2..6eec5391 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/CheckerVolleyNextRequest.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/CheckerVolleyNextRequest.java @@ -1,10 +1,10 @@ -package com.mobnetic.coinguardiandatamodule.tester.volley; +package com.aneonex.bitcoinchecker.tester.volley; import java.util.Map; import com.android.volley.toolbox.RequestFuture; -import com.mobnetic.coinguardian.model.CheckerInfo; -import com.mobnetic.coinguardiandatamodule.tester.volley.generic.GenericCheckerVolleyRequest; +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo; +import com.aneonex.bitcoinchecker.tester.volley.generic.GenericCheckerVolleyRequest; public class CheckerVolleyNextRequest extends GenericCheckerVolleyRequest { diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/DynamicCurrencyPairsVolleyMainRequest.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/DynamicCurrencyPairsVolleyMainRequest.java similarity index 82% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/DynamicCurrencyPairsVolleyMainRequest.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/DynamicCurrencyPairsVolleyMainRequest.java index 45464ef2..15e47952 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/DynamicCurrencyPairsVolleyMainRequest.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/DynamicCurrencyPairsVolleyMainRequest.java @@ -1,4 +1,4 @@ -package com.mobnetic.coinguardiandatamodule.tester.volley; +package com.aneonex.bitcoinchecker.tester.volley; import java.util.ArrayList; import java.util.Collections; @@ -11,12 +11,12 @@ import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.toolbox.RequestFuture; -import com.mobnetic.coinguardian.model.CurrencyPairInfo; -import com.mobnetic.coinguardian.model.CurrencyPairsListWithDate; -import com.mobnetic.coinguardian.model.Market; -import com.mobnetic.coinguardian.util.CurrencyPairsMapHelper; -import com.mobnetic.coinguardiandatamodule.tester.util.MarketCurrencyPairsStore; -import com.mobnetic.coinguardiandatamodule.tester.volley.generic.GzipVolleyRequest; +import com.aneonex.bitcoinchecker.datamodule.model.CurrencyPairInfo; +import com.aneonex.bitcoinchecker.datamodule.model.CurrencyPairsListWithDate; +import com.aneonex.bitcoinchecker.datamodule.model.Market; +import com.aneonex.bitcoinchecker.datamodule.util.CurrencyPairsMapHelper; +import com.aneonex.bitcoinchecker.tester.util.MarketCurrencyPairsStore; +import com.aneonex.bitcoinchecker.tester.volley.generic.GzipVolleyRequest; public class DynamicCurrencyPairsVolleyMainRequest extends GzipVolleyRequest { diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/DynamicCurrencyPairsVolleyNextRequest.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/DynamicCurrencyPairsVolleyNextRequest.java similarity index 75% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/DynamicCurrencyPairsVolleyNextRequest.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/DynamicCurrencyPairsVolleyNextRequest.java index 496f6397..02d13a4a 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/DynamicCurrencyPairsVolleyNextRequest.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/DynamicCurrencyPairsVolleyNextRequest.java @@ -1,9 +1,9 @@ -package com.mobnetic.coinguardiandatamodule.tester.volley; +package com.aneonex.bitcoinchecker.tester.volley; import java.util.Map; import com.android.volley.toolbox.RequestFuture; -import com.mobnetic.coinguardiandatamodule.tester.volley.generic.GzipVolleyRequest; +import com.aneonex.bitcoinchecker.tester.volley.generic.GzipVolleyRequest; public class DynamicCurrencyPairsVolleyNextRequest extends GzipVolleyRequest { diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/UnknownVolleyError.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/UnknownVolleyError.java similarity index 79% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/UnknownVolleyError.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/UnknownVolleyError.java index b25bc99d..9b97cc23 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/UnknownVolleyError.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/UnknownVolleyError.java @@ -1,4 +1,4 @@ -package com.mobnetic.coinguardiandatamodule.tester.volley; +package com.aneonex.bitcoinchecker.tester.volley; import com.android.volley.VolleyError; diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/generic/GenericCheckerVolleyRequest.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/generic/GenericCheckerVolleyRequest.java similarity index 78% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/generic/GenericCheckerVolleyRequest.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/generic/GenericCheckerVolleyRequest.java index aed7f800..e62d8ccb 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/generic/GenericCheckerVolleyRequest.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/generic/GenericCheckerVolleyRequest.java @@ -1,8 +1,8 @@ -package com.mobnetic.coinguardiandatamodule.tester.volley.generic; +package com.aneonex.bitcoinchecker.tester.volley.generic; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; -import com.mobnetic.coinguardian.model.CheckerInfo; +import com.aneonex.bitcoinchecker.datamodule.model.CheckerInfo; public abstract class GenericCheckerVolleyRequest extends GzipVolleyRequest { diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/generic/GzipVolleyRequest.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/generic/GzipVolleyRequest.java similarity index 95% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/generic/GzipVolleyRequest.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/generic/GzipVolleyRequest.java index b8fee520..b21c93c3 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/generic/GzipVolleyRequest.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/generic/GzipVolleyRequest.java @@ -1,4 +1,4 @@ -package com.mobnetic.coinguardiandatamodule.tester.volley.generic; +package com.aneonex.bitcoinchecker.tester.volley.generic; import java.io.BufferedReader; import java.io.ByteArrayInputStream; @@ -19,8 +19,8 @@ import com.android.volley.Response.Listener; import com.android.volley.VolleyError; import com.android.volley.toolbox.HttpHeaderParser; -import com.mobnetic.coinguardiandatamodule.tester.volley.CheckerErrorParsedError; -import com.mobnetic.coinguardiandatamodule.tester.volley.UnknownVolleyError; +import com.aneonex.bitcoinchecker.tester.volley.CheckerErrorParsedError; +import com.aneonex.bitcoinchecker.tester.volley.UnknownVolleyError; public abstract class GzipVolleyRequest extends Request { diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/generic/ResponseErrorListener.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/generic/ResponseErrorListener.java similarity index 88% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/generic/ResponseErrorListener.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/generic/ResponseErrorListener.java index cbcc502d..624bb386 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/generic/ResponseErrorListener.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/generic/ResponseErrorListener.java @@ -1,4 +1,4 @@ -package com.mobnetic.coinguardiandatamodule.tester.volley.generic; +package com.aneonex.bitcoinchecker.tester.volley.generic; import java.util.Map; diff --git a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/generic/ResponseListener.java b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/generic/ResponseListener.java similarity index 87% rename from dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/generic/ResponseListener.java rename to dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/generic/ResponseListener.java index 25b9cf35..05118031 100644 --- a/dataModuleTester/src/main/java/com/mobnetic/coinguardiandatamodule/tester/volley/generic/ResponseListener.java +++ b/dataModuleTester/src/main/java/com/aneonex/bitcoinchecker/tester/volley/generic/ResponseListener.java @@ -1,4 +1,4 @@ -package com.mobnetic.coinguardiandatamodule.tester.volley.generic; +package com.aneonex.bitcoinchecker.tester.volley.generic; import java.util.Map;