Updated on 2026-08-14

This commit is contained in:
Tangem 2018-10-11 12:39:58 +03:00
parent 6c8c365317
commit 922610a9ed
7 changed files with 50 additions and 163 deletions

View file

@ -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";
}
}

View file

@ -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<ElectrumRequest> 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<ElectrumRequest>() {
@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<ElectrumRequest> 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<ElectrumRequest> 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, ">> <NULL>");
}
} 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<ResponseBody> call = updateVersionApi.getLastVersion();
call.enqueue(new Callback<ResponseBody>() {
@ -472,7 +337,6 @@ public class ServerApiHelper {
Log.e(TAG, "lastVersion onFailure " + t.getMessage());
}
});
}
}