Updated on 2026-08-14
This commit is contained in:
parent
6c8c365317
commit
922610a9ed
7 changed files with 50 additions and 163 deletions
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue