diff --git a/app/src/main/java/com/tangem/data/network/Server.java b/app/src/main/java/com/tangem/data/network/Server.java index a74bace4ac..e7c666b4ec 100644 --- a/app/src/main/java/com/tangem/data/network/Server.java +++ b/app/src/main/java/com/tangem/data/network/Server.java @@ -10,9 +10,9 @@ public class Server { public static final String URL_TANGEM = ServerURL.API_TANGEM; public static class Method { - public static final String VERIFY = URL_TANGEM + "verify"; - public static final String VERIFY_AND_GET_INFO = URL_TANGEM + "card/verify-and-get-info"; - public static final String ARTWORK = URL_TANGEM + "card/artwork"; + static final String VERIFY = URL_TANGEM + "verify"; + static final String VERIFY_AND_GET_INFO = URL_TANGEM + "card/verify-and-get-info"; + static final String ARTWORK = URL_TANGEM + "card/artwork"; } } @@ -20,7 +20,7 @@ public class Server { public static final String URL_UPDATE_VERSION = ServerURL.API_UPDATE_VERSION; public static class Method { - public static final String LAST_VERSION = URL_UPDATE_VERSION +"TangemCash/tangem-binaries/master/apk-version.txt"; + static final String LAST_VERSION = URL_UPDATE_VERSION + "TangemCash/tangem-binaries/master/apk-version.txt"; } } @@ -31,7 +31,7 @@ public class Server { public static final String URL_COINMARKET = ServerURL.API_COINMARKETCAP; public static class Method { - public static final String V1_TICKER_CONVERT = URL_COINMARKET + "v1/ticker/?convert=USD&lmit=10"; + static final String V1_TICKER_CONVERT = URL_COINMARKET + "v1/ticker/?convert=USD&lmit=10"; } } @@ -42,7 +42,7 @@ public class Server { public static final String URL_INFURA = ServerURL.API_INFURA; public static class Method { - public static final String MAIN = URL_INFURA + "AfWg0tmYEX5Kukn2UkKV"; + static final String MAIN = URL_INFURA + "AfWg0tmYEX5Kukn2UkKV"; } } @@ -53,9 +53,9 @@ public class Server { public static final String URL_ESTIMATEFEE = ServerURL.API_ESTIMATEFEE; public static class Method { - public static final String N_2 = URL_ESTIMATEFEE + "n/2"; - public static final String N_3 = URL_ESTIMATEFEE + "n/3"; - public static final String N_6 = URL_ESTIMATEFEE + "n/6"; + static final String N_2 = URL_ESTIMATEFEE + "n/2"; + static final String N_3 = URL_ESTIMATEFEE + "n/3"; + static final String N_6 = URL_ESTIMATEFEE + "n/6"; } } diff --git a/app/src/main/java/com/tangem/data/network/ServerApiHelper.java b/app/src/main/java/com/tangem/data/network/ServerApiHelper.java index c5aa411c3e..6d76d16adc 100644 --- a/app/src/main/java/com/tangem/data/network/ServerApiHelper.java +++ b/app/src/main/java/com/tangem/data/network/ServerApiHelper.java @@ -299,127 +299,6 @@ public class ServerApiHelper { Throwable::printStackTrace); } - /** - * TCP - * Used in BTC - */ - private String host; - private int port; - private ElectrumRequestDataListener electrumRequestDataListener; - - public interface ElectrumRequestDataListener { - void onElectrumRequestData(ElectrumRequest electrumRequest); - } - - public void setElectrumRequestData(ElectrumRequestDataListener listener) { - electrumRequestDataListener = listener; - } - - public void electrumRequestData(TangemCard card, ElectrumRequest electrumRequest) { - Observable checkBalanceObserver = Observable.just(electrumRequest) - .doOnNext(electrumRequest1 -> doElectrumRequest(card, electrumRequest)) - .flatMap(electrumRequest1 -> { - if (electrumRequest1.answerData == null) - return Observable.error(new NullPointerException()); - else - return Observable.just(electrumRequest1); - }) - .retryWhen(errors -> errors - .filter(throwable -> throwable instanceof NullPointerException) - .zipWith(Observable.range(1, 2), (n, i) -> i)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - checkBalanceObserver.subscribe(new DefaultObserver() { - @Override - public void onNext(ElectrumRequest v) { - if (electrumRequest.answerData != null) { - electrumRequestDataListener.onElectrumRequestData(electrumRequest); - Log.i(TAG, "electrumRequestData " + electrumRequest.getMethod() + " onNext != null"); - } else { - Log.e(TAG, "electrumRequestData " + electrumRequest.getMethod() + " onNext == null"); - } - } - - @Override - public void onError(Throwable e) { - Log.e(TAG, "electrumRequestData " + electrumRequest.getMethod() + " onError " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.i(TAG, "electrumRequestData " + electrumRequest.getMethod() + " onComplete"); - } - - }); - } - - private List doElectrumRequest(TangemCard card, ElectrumRequest electrumRequest) { - - BitcoinNode bitcoinNode = BitcoinNode.values()[new Random().nextInt(BitcoinNode.values().length)]; - - if (card.getBlockchain() == Blockchain.BitcoinTestNet || card.getBlockchain() == Blockchain.BitcoinCashTestNet) { - BitcoinNodeTestNet bitcoinNodeTestNet = BitcoinNodeTestNet.values()[new Random().nextInt(BitcoinNodeTestNet.values().length)]; - this.host = bitcoinNodeTestNet.getHost(); - this.port = bitcoinNodeTestNet.getPort(); - - } else { - this.host = bitcoinNode.getHost(); - this.port = bitcoinNode.getPort(); - } - - List result = new ArrayList<>(); - Collections.addAll(result, electrumRequest); - - try { -// Log.i(TAG, "host " + host + " !!!!!!!!!!!! " + "port " + String.valueOf(port)); - InetAddress serverAddress = InetAddress.getByName(host); - Socket socket = new Socket(); - socket.setSoTimeout(5000); - socket.bind(new InetSocketAddress(0)); - socket.connect(new InetSocketAddress(serverAddress, port)); - try { -// Log.i(TAG, "<< "); - OutputStream os = socket.getOutputStream(); - OutputStreamWriter out = new OutputStreamWriter(os, "UTF-8"); - InputStream is = socket.getInputStream(); - BufferedReader in = new BufferedReader(new InputStreamReader(is)); - electrumRequest.setID(1); - - // do request - try { - out.write(electrumRequest.getAsString() + "\n"); - out.flush(); - - electrumRequest.answerData = in.readLine(); - electrumRequest.host = host; - electrumRequest.port = port; - if (electrumRequest.answerData != null) { -// Log.i(TAG, ">> " + electrumRequest.answerData); - } else { - electrumRequest.error = "No answer from server"; -// Log.i(TAG, ">> "); - } - } catch (Exception e) { - electrumRequest.error = e.toString(); - } - - } catch (Exception e) { - e.printStackTrace(); -// Log.i(TAG, e.getMessage()); - } finally { -// Log.i(TAG, "close"); - socket.close(); - } - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - public String getValidationNodeDescription() { - return "Electrum, " + host + ":" + String.valueOf(port); - } - /** * HTTP * Last version request from GitHub @@ -435,21 +314,7 @@ public class ServerApiHelper { } public void requestLastVersion() { - - HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); - logging.setLevel(HttpLoggingInterceptor.Level.BODY); - - OkHttpClient httpClient = new OkHttpClient.Builder(). - addInterceptor(logging). -// addInterceptor(new AuthorizationInterceptor()). - build(); - Retrofit retrofit = new Retrofit.Builder() - .baseUrl(Server.ApiUpdateVersion.URL_UPDATE_VERSION) - .addConverterFactory(GsonConverterFactory.create()) - .client(httpClient) - .build(); - - UpdateVersionApi updateVersionApi = retrofit.create(UpdateVersionApi.class); + UpdateVersionApi updateVersionApi = App.getComponent().getRetrofitGithubusercontent().create(UpdateVersionApi.class); Call call = updateVersionApi.getLastVersion(); call.enqueue(new Callback() { @@ -472,7 +337,6 @@ public class ServerApiHelper { Log.e(TAG, "lastVersion onFailure " + t.getMessage()); } }); - } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/di/AppComponent.java b/app/src/main/java/com/tangem/di/AppComponent.java index e35443e1e2..f440b4d93d 100644 --- a/app/src/main/java/com/tangem/di/AppComponent.java +++ b/app/src/main/java/com/tangem/di/AppComponent.java @@ -24,4 +24,7 @@ public interface AppComponent { @Named(Server.ApiCoinmarket.URL_COINMARKET) Retrofit getRetrofitCoinmarketcap(); + @Named(Server.ApiUpdateVersion.URL_UPDATE_VERSION) + Retrofit getRetrofitGithubusercontent(); + } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/di/NetworkModule.java b/app/src/main/java/com/tangem/di/NetworkModule.java index 461266c99c..e457277dc3 100644 --- a/app/src/main/java/com/tangem/di/NetworkModule.java +++ b/app/src/main/java/com/tangem/di/NetworkModule.java @@ -47,16 +47,15 @@ class NetworkModule { .build(); } - private OkHttpClient createHttpClient() { - return new OkHttpClient.Builder(). - addInterceptor(createLogging()). - build(); - } - - private HttpLoggingInterceptor createLogging() { - HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); - logging.setLevel(HttpLoggingInterceptor.Level.BODY); - return logging; + @Singleton + @Provides + @Named(Server.ApiUpdateVersion.URL_UPDATE_VERSION) + Retrofit provideGithubusercontent() { + return new Retrofit.Builder() + .baseUrl(Server.ApiUpdateVersion.URL_UPDATE_VERSION) + .addConverterFactory(GsonConverterFactory.create()) + .client(createHttpClient()) + .build(); } @Singleton @@ -70,4 +69,16 @@ class NetworkModule { .build(); } + private OkHttpClient createHttpClient() { + return new OkHttpClient.Builder(). + addInterceptor(createLogging()). + build(); + } + + private HttpLoggingInterceptor createLogging() { + HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); + logging.setLevel(HttpLoggingInterceptor.Level.BODY); + return logging; + } + } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt b/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt index c5669409ce..e7c45cf8e0 100644 --- a/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt @@ -14,6 +14,7 @@ import android.view.KeyEvent import android.view.View import android.widget.* import com.tangem.data.network.ServerApiHelper +import com.tangem.data.network.ServerApiHelperElectrum import com.tangem.data.network.model.InfuraResponse import com.tangem.data.network.request.ElectrumRequest import com.tangem.domain.cardReader.NfcManager @@ -39,6 +40,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { private var nfcManager: NfcManager? = null private var serverApiHelper: ServerApiHelper? = null + private var serverApiHelperElectrum: ServerApiHelperElectrum? = null var card: TangemCard? = null var feeRequestSuccess = false var balanceRequestSuccess = false @@ -218,7 +220,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { } // request electrum listener - serverApiHelper!!.setElectrumRequestData { + serverApiHelperElectrum!!.setElectrumRequestData { if (it.isMethod(ElectrumRequest.METHOD_GetBalance)) { try { etFee!!.setText("--") @@ -340,7 +342,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { } private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) { - serverApiHelper!!.electrumRequestData(card, electrumRequest) + serverApiHelperElectrum!!.electrumRequestData(card, electrumRequest) } private fun requestInfura(method: String) { diff --git a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt index 6d2b5a2dbe..03bee527e9 100644 --- a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt @@ -9,6 +9,7 @@ import android.util.Log import android.view.KeyEvent import android.widget.Toast import com.tangem.data.network.ServerApiHelper +import com.tangem.data.network.ServerApiHelperElectrum import com.tangem.data.network.model.InfuraResponse import com.tangem.data.network.request.ElectrumRequest import com.tangem.domain.cardReader.NfcManager @@ -29,6 +30,8 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback } private var serverApiHelper: ServerApiHelper? = null + private var serverApiHelperElectrum: ServerApiHelperElectrum? = null + var card: TangemCard? = null private var tx: String? = null private var nfcManager: NfcManager? = null @@ -42,6 +45,7 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback nfcManager = NfcManager(this, this) serverApiHelper = ServerApiHelper() + serverApiHelperElectrum = ServerApiHelperElectrum() val intent = intent card = TangemCard(getIntent().getStringExtra(EXTRA_UID)) @@ -63,7 +67,7 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback } // request electrum listener - serverApiHelper!!.setElectrumRequestData { + serverApiHelperElectrum!!.setElectrumRequestData { if (it.isMethod(ElectrumRequest.METHOD_SendTransaction)) { try { var hashTX = it.resultString @@ -156,7 +160,7 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback } private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) { - serverApiHelper!!.electrumRequestData(card, electrumRequest) + serverApiHelperElectrum!!.electrumRequestData(card, electrumRequest) } fun finishWithError(message: String) { diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt index 3c213e0ecb..1f6c0973d2 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -22,6 +22,7 @@ import android.view.ViewGroup import android.widget.Toast import com.google.zxing.WriterException import com.tangem.data.network.ServerApiHelper +import com.tangem.data.network.ServerApiHelperElectrum import com.tangem.data.network.model.InfuraResponse import com.tangem.data.network.request.ElectrumRequest import com.tangem.data.nfc.VerifyCardTask @@ -59,6 +60,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific private var singleToast: Toast? = null private var nfcManager: NfcManager? = null private var serverApiHelper: ServerApiHelper? = null + private var serverApiHelperElectrum: ServerApiHelperElectrum? = null var card: TangemCard? = null private var lastTag: Tag? = null var srlLoadedWallet: SwipeRefreshLayout? = null @@ -84,6 +86,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific nfcManager = NfcManager(activity, this) serverApiHelper = ServerApiHelper() + serverApiHelperElectrum = ServerApiHelperElectrum() sp = PreferenceManager.getDefaultSharedPreferences(activity) @@ -219,7 +222,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } // request electrum listener - serverApiHelper!!.setElectrumRequestData { + serverApiHelperElectrum!!.setElectrumRequestData { requestCounter-- if (requestCounter == 0) srlLoadedWallet!!.isRefreshing = false @@ -233,7 +236,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific card!!.setBalanceConfirmed(confBalance) card!!.balanceUnconfirmed = unconfirmedBalance card!!.decimalBalance = confBalance.toString() - card!!.validationNodeDescription = serverApiHelper!!.validationNodeDescription + card!!.validationNodeDescription = serverApiHelperElectrum!!.validationNodeDescription } catch (e: JSONException) { e.printStackTrace() engine.switchNode(card) @@ -476,7 +479,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific private fun requestElectrum(card: TangemCard, electrumRequest: ElectrumRequest) { requestCounter++ - serverApiHelper!!.electrumRequestData(card, electrumRequest) + serverApiHelperElectrum!!.electrumRequestData(card, electrumRequest) } private fun requestInfura(method: String, contract: String) {