diff --git a/app/src/main/java/com/m2049r/xmrwallet/WalletFragment.java b/app/src/main/java/com/m2049r/xmrwallet/WalletFragment.java
index e4d7e182..f9a5be8f 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/WalletFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/WalletFragment.java
@@ -43,9 +43,7 @@ import com.m2049r.xmrwallet.model.Wallet;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate;
-import com.m2049r.xmrwallet.service.exchange.kraken.ExchangeApiImpl;
import com.m2049r.xmrwallet.util.Helper;
-import com.m2049r.xmrwallet.util.OkHttpClientSingleton;
import com.m2049r.xmrwallet.widget.Toolbar;
import java.text.NumberFormat;
@@ -152,7 +150,7 @@ public class WalletFragment extends Fragment
// at this point selection is XMR in case of error
String displayB;
double amountA = Double.parseDouble(Wallet.getDisplayAmount(unlockedBalance)); // crash if this fails!
- if (!"XMR".equals(balanceCurrency)) { // not XMR
+ if (!Helper.CRYPTO.equals(balanceCurrency)) { // not XMR
double amountB = amountA * balanceRate;
displayB = Helper.getFormattedAmount(amountB, false);
} else { // XMR
@@ -161,10 +159,10 @@ public class WalletFragment extends Fragment
tvBalance.setText(displayB);
}
- String balanceCurrency = "XMR";
+ String balanceCurrency = Helper.CRYPTO;
double balanceRate = 1.0;
- private final ExchangeApi exchangeApi = new ExchangeApiImpl(OkHttpClientSingleton.getOkHttpClient());
+ private final ExchangeApi exchangeApi = Helper.getExchangeApi();
void refreshBalance() {
if (sCurrency.getSelectedItemPosition() == 0) { // XMR
@@ -172,9 +170,10 @@ public class WalletFragment extends Fragment
tvBalance.setText(Helper.getFormattedAmount(amountXmr, true));
} else { // not XMR
String currency = (String) sCurrency.getSelectedItem();
+ Timber.d(currency);
if (!currency.equals(balanceCurrency) || (balanceRate <= 0)) {
showExchanging();
- exchangeApi.queryExchangeRate("XMR", currency,
+ exchangeApi.queryExchangeRate(Helper.CRYPTO, currency,
new ExchangeCallback() {
@Override
public void onSuccess(final ExchangeRate exchangeRate) {
@@ -230,10 +229,10 @@ public class WalletFragment extends Fragment
public void exchange(final ExchangeRate exchangeRate) {
hideExchanging();
- if (!"XMR".equals(exchangeRate.getBaseCurrency())) {
+ if (!Helper.CRYPTO.equals(exchangeRate.getBaseCurrency())) {
Timber.e("Not XMR");
sCurrency.setSelection(0, true);
- balanceCurrency = "XMR";
+ balanceCurrency = Helper.CRYPTO;
balanceRate = 1.0;
} else {
int spinnerPosition = ((ArrayAdapter) sCurrency.getAdapter()).getPosition(exchangeRate.getQuoteCurrency());
diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/exchange/kraken/ExchangeApiImpl.java b/app/src/main/java/com/m2049r/xmrwallet/service/exchange/coinmarketcap/ExchangeApiImpl.java
similarity index 84%
rename from app/src/main/java/com/m2049r/xmrwallet/service/exchange/kraken/ExchangeApiImpl.java
rename to app/src/main/java/com/m2049r/xmrwallet/service/exchange/coinmarketcap/ExchangeApiImpl.java
index 8c061c8f..50087158 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/service/exchange/kraken/ExchangeApiImpl.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/service/exchange/coinmarketcap/ExchangeApiImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 m2049r et al.
+ * Copyright (c) 2017-2018 m2049r et al.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.m2049r.xmrwallet.service.exchange.kraken;
+package com.m2049r.xmrwallet.service.exchange.coinmarketcap;
import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
@@ -23,6 +23,7 @@ import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeException;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate;
+import com.m2049r.xmrwallet.util.Helper;
import org.json.JSONArray;
import org.json.JSONException;
@@ -37,6 +38,7 @@ import okhttp3.Request;
import okhttp3.Response;
public class ExchangeApiImpl implements ExchangeApi {
+ static final String CRYPTO_ID = "328";
@NonNull
private final OkHttpClient okHttpClient;
@@ -52,7 +54,7 @@ public class ExchangeApiImpl implements ExchangeApi {
}
public ExchangeApiImpl(@NonNull final OkHttpClient okHttpClient) {
- this(okHttpClient, HttpUrl.parse("https://api.kraken.com/0/public/Ticker"));
+ this(okHttpClient, HttpUrl.parse("https://api.coinmarketcap.com/v2/ticker/"));
}
@Override
@@ -67,12 +69,12 @@ public class ExchangeApiImpl implements ExchangeApi {
boolean inverse = false;
String fiat = null;
- if (baseCurrency.equals("XMR")) {
+ if (baseCurrency.equals(Helper.CRYPTO)) {
fiat = quoteCurrency;
inverse = false;
}
- if (quoteCurrency.equals("XMR")) {
+ if (quoteCurrency.equals(Helper.CRYPTO)) {
fiat = baseCurrency;
inverse = true;
}
@@ -85,7 +87,8 @@ public class ExchangeApiImpl implements ExchangeApi {
final boolean swapAssets = inverse;
final HttpUrl url = baseUrl.newBuilder()
- .addQueryParameter("pair", "XMR" + fiat)
+ .addEncodedPathSegments(CRYPTO_ID + "/")
+ .addQueryParameter("convert", fiat)
.build();
final Request httpRequest = createHttpRequest(url);
@@ -101,12 +104,12 @@ public class ExchangeApiImpl implements ExchangeApi {
if (response.isSuccessful()) {
try {
final JSONObject json = new JSONObject(response.body().string());
- final JSONArray jsonError = json.getJSONArray("error");
- if (jsonError.length() > 0) {
- final String errorMsg = jsonError.getString(0);
- callback.onError(new ExchangeException(response.code(), errorMsg));
+ final JSONObject metadata = json.getJSONObject("metadata");
+ if (!metadata.isNull("error")) {
+ final String errorMsg = metadata.getString("error");
+ callback.onError(new ExchangeException(response.code(), (String) errorMsg));
} else {
- final JSONObject jsonResult = json.getJSONObject("result");
+ final JSONObject jsonResult = json.getJSONObject("data");
reportSuccess(jsonResult, swapAssets, callback);
}
} catch (JSONException ex) {
@@ -130,7 +133,6 @@ public class ExchangeApiImpl implements ExchangeApi {
}
}
-
private Request createHttpRequest(final HttpUrl url) {
return new Request.Builder()
.url(url)
diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/exchange/kraken/ExchangeRateImpl.java b/app/src/main/java/com/m2049r/xmrwallet/service/exchange/coinmarketcap/ExchangeRateImpl.java
similarity index 61%
rename from app/src/main/java/com/m2049r/xmrwallet/service/exchange/kraken/ExchangeRateImpl.java
rename to app/src/main/java/com/m2049r/xmrwallet/service/exchange/coinmarketcap/ExchangeRateImpl.java
index 64ba4ad2..42a16d78 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/service/exchange/kraken/ExchangeRateImpl.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/service/exchange/coinmarketcap/ExchangeRateImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 m2049r et al.
+ * Copyright (c) 2017-2018 m2049r et al.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.m2049r.xmrwallet.service.exchange.kraken;
+package com.m2049r.xmrwallet.service.exchange.coinmarketcap;
import android.support.annotation.NonNull;
@@ -25,6 +25,7 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
+import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -37,7 +38,7 @@ class ExchangeRateImpl implements ExchangeRate {
@Override
public String getServiceName() {
- return "kraken.com";
+ return "coinmarketcap.com";
}
@Override
@@ -64,29 +65,21 @@ class ExchangeRateImpl implements ExchangeRate {
ExchangeRateImpl(final JSONObject jsonObject, final boolean swapAssets) throws JSONException, ExchangeException {
try {
- final String key = jsonObject.keys().next(); // we expect only one
- Pattern pattern = Pattern.compile("^X(.*?)Z(.*?)$");
- Matcher matcher = pattern.matcher(key);
- if (matcher.find()) {
- this.baseCurrency = swapAssets ? matcher.group(2) : matcher.group(1);
- this.quoteCurrency = swapAssets ? matcher.group(1) : matcher.group(2);
- } else {
- throw new ExchangeException("no pair returned!");
- }
-
- JSONObject pair = jsonObject.getJSONObject(key);
- JSONArray close = pair.getJSONArray("c");
- String closePrice = close.getString(0);
- if (closePrice != null) {
- try {
- double rate = Double.parseDouble(closePrice);
- this.rate = swapAssets ? (1 / rate) : rate;
- } catch (NumberFormatException ex) {
- throw new ExchangeException(ex.getLocalizedMessage());
- }
- } else {
- throw new ExchangeException("no close price returned!");
+ final String baseC = jsonObject.getString("symbol");
+ final JSONObject quotes = jsonObject.getJSONObject("quotes");
+ final Iterator
Andere persönliche Daten werden von der App nicht gesammelt.
-Wenn du den USD/EUR Umrechner (optional) nutzt fragt Monerujo - den aktuellen Kurs über die öffentliche Schnittstelle von kraken.com ab. - Siehe dir ihre Datenschutzerklärung unter https://www.kraken.com/legal/privacy für - Details darüber an, wie Daten in deinen Anfragen gesammelt werden (insbesondere der - Abschnitt "Information We Collect Automatically").
+Wenn du den Umrechner (optional) nutzt fragt Monerujo + den aktuellen Kurs über die öffentliche Schnittstelle von coinmarketcap.com ab. + Siehe dir ihre Datenschutzerklärung unter https://coinmarketcap.com/privacy für + Details darüber an, wie Daten in deinen Anfragen gesammelt werden.
Wenn du die App zum Bezahlen an BTC-Adressen verwendest, verwendest du den Dienst XMR.TO. Weitere Informationen findest du in den Datenschutzerklärung unter https://xmr.to/. Monerujo schickt dem Anbieter die BTC Zieladresse und den Betrag. diff --git a/app/src/main/res/values-es/about.xml b/app/src/main/res/values-es/about.xml index ddd25b09..531aa409 100644 --- a/app/src/main/res/values-es/about.xml +++ b/app/src/main/res/values-es/about.xml @@ -29,11 +29,10 @@ Monero de forma cifrada.
Otros datos personales no son recopilados por la app.
-Si utiliza la funcionalidad de cambio USD/EUR (opcional), monerujo obtiene la tasa - de cambio a través de la API pública de kraken.com. - Vea su política de privadad en https://www.kraken.com/legal/privacy para conocer más - detalles acerca de como se recopilan los datos de sus peticiones (especialmente la sección - "Innformation We Collect Automatically").
+Si utiliza la funcionalidad de cambio (opcional), monerujo obtiene la tasa + de cambio a través de la API pública de coinmarketcap.com. + Vea su política de privadad en https://coinmarketcap.com/privacy para conocer más + detalles acerca de como se recopilan los datos de sus peticiones.
Aucune autre donnée personnelle n’est collectée par l’application.
-Si vous utilisez la fonction (optionnelle) de change USD/EUR, monerujo récupère le - taux de change via l’API publique de kraken.com. - Consultez leur politique de confidentialité sur https://www.kraken.com/legal/privacy - pour des détails sur la façon dont les données de vos requêtes sont collectées - (particulièrement la rubrique "Information We Collect Automatically").
+Si vous utilisez la fonction (optionnelle) de change, monerujo récupère le + taux de change via l’API publique de coinmarketcap.com. + Consultez leur politique de confidentialité sur https://coinmarketcap.com/privacy + pour des détails sur la façon dont les données de vos requêtes sont collectées.
Si vous utilisez l’application pour payer à une adresse BTC, vous utiliserez le service XMR.TO. Consultez leur politique de confidentialité sur https://xmr.to/ pour plus de détails. Monerujo leur transmet l’adresse de destination BTC et le @@ -64,4 +63,4 @@
]]> - \ No newline at end of file + diff --git a/app/src/main/res/values-it/about.xml b/app/src/main/res/values-it/about.xml index e3e1c5fb..c3bc9e84 100644 --- a/app/src/main/res/values-it/about.xml +++ b/app/src/main/res/values-it/about.xml @@ -15,35 +15,35 @@Questa pagina ti informa sulla nostra politica riguardante la raccolta, l'utilizzo e la rivelazione di informazioni personali che riceviamo dagli utenti della nostra app (monerujo: Portafoglio Monero). +
Questa pagina ti informa sulla nostra politica riguardante la raccolta, l\'utilizzo e la rivelazione di informazioni personali che riceviamo dagli utenti della nostra app (monerujo: Portafoglio Monero).
-Usando questa app, acconsenti alla raccolta e all'utilizzo delle informazioni in accordo con questa politica. +
Usando questa app, acconsenti alla raccolta e all\'utilizzo delle informazioni in accordo con questa politica.
Per "dato personale" si intende ogni tipo di dato grazie al quale è possibile identificare un individuo.
-Le chiavi e gli indirizzi pubblici di Monero vengono raccolti e processati dall'app localmente con lo scopo di processare le transazioni e vengono trasmessi all'interno della rete Monero in modo cifrato. +
Le chiavi e gli indirizzi pubblici di Monero vengono raccolti e processati dall\'app localmente con lo scopo di processare le transazioni e vengono trasmessi all\'interno della rete Monero in modo cifrato.
-Altri dati personali non sono raccolti dall'app.
-Se usi la funzionalità (opzionale) del cambio USD/EUR, monerujo recupera il tasso di cambio attraverso le API pubbliche di kraken.com. - Controlla la loro politica per la privacy (in lingua inglese) su https://www.kraken.com/legal/privacy per conoscere i dettagli su come vengono raccolti i dati nelle tue richieste (specialmente la sezione "Information We Collect Automatically" - "Informazioni che raccogliamo in modo automatico).
+Altri dati personali non sono raccolti dall\'app.
+Se usi la funzionalità (opzionale) del cambio, monerujo recupera il tasso di cambio attraverso le API pubbliche di coinmarketcap.com. + Controlla la loro politica per la privacy (in lingua inglese) su https://coinmarketcap.com/privacy per conoscere i dettagli su come vengono raccolti i dati nelle tue richieste.
Se utilizzi l'app per effettuare pagamenti ad indirizzi BTC, stai usando il servizio XMR.TO. Controlla la loro politica per la privacy (in lingua inglese) su https://xmr.to/ per conoscere i dettagli. Monerujo invia a loro l'indirizzo di destinazione BTC e l'ammontare della transazione. Anche il tuo IP potrebbe essere raccolto.
Potremmo aggiorare questa politica per la privacy di volta in volta. Ti invieremo una notifica su ciò che è cambiato pubblicando la nuova politica per la privacy all'interno dell'app e sul sito (www.monerujo.io) +
Potremmo aggiorare questa politica per la privacy di volta in volta. Ti invieremo una notifica su ciò che è cambiato pubblicando la nuova politica per la privacy all\'interno dell\'app e sul sito (www.monerujo.io) Sei invitato a rivedere periodicamente questa politica per la privacy per controllarne i cambiamenti.
Questa politica per la privacy è stata aggiornata il 10 novembre 2017.
Se hai dubbi o domande sulla nostra politica per la privacy, oppure su come i tuoi dati vengono raccolti e processati, contattaci all'indirizzo email privacy@monerujo.io. +
Se hai dubbi o domande sulla nostra politica per la privacy, oppure su come i tuoi dati vengono raccolti e processati, contattaci all\'indirizzo email privacy@monerujo.io.
]]>Other personal data is not collected by the app.
-If you use the USD/EUR exchange (optional) functionality, monerujo fetches the exchange - rate through the public API of kraken.com. - See their privacy policy at https://www.kraken.com/legal/privacy for - details on how data in your requests is collected (especially the - section "Information We Collect Automatically").
+If you use the exchange (optional) functionality, monerujo fetches the exchange + rate through the public API of coinmarketcap.com. + See their privacy policy at https://coinmarketcap.com/privacy for + details on how data in your requests is collected.
If you use the app to pay to BTC addresses, you will be using the XMR.TO service. See their privacy policy at https://xmr.to/ for details. Monerujo send them the BTC destination address and amount. Your IP will also be collectable.
@@ -59,4 +58,4 @@ please e-mail privacy@monerujo.io. ]]> - \ No newline at end of file + diff --git a/app/src/main/res/values-zh-rCN/about.xml b/app/src/main/res/values-zh-rCN/about.xml index 9811096b..123252fb 100644 --- a/app/src/main/res/values-zh-rCN/about.xml +++ b/app/src/main/res/values-zh-rCN/about.xml @@ -22,9 +22,9 @@Monerujo 只会在本地端使用您的 Monero 私钥以及公开地址执行必要的处理,并在加密后发送至 Monero 网络进行交易。
其他个人信息都不会被 monerujo 收集。
-如果你使用 USD/EUR 外汇的功能(可选用),monerujo 將通过 kraken.com 的公开 - API 抓取当前汇率。如果你想了解自己被收集的信息如何被使用,请访问 https://www.kraken.com/legal/privacy - 查看他们的隐私政策,特別是「Information We Collect Automatically」章节。
+如果你使用外汇的功能(可选用),monerujo 將通过 coinmarketcap.com 的公开 + API 抓取当前汇率。如果你想了解自己被收集的信息如何被使用,请访问 https://coinmarketcap.com/privacy + 查看他们的隐私政策。
如果你想使用本 App 支付款项至比特币地址,您将使用 XMR.TO 所提供的服务。Monerujo 将发送比特币的目标地址以及金额至 XMR.TO,您的 IP 在此时也可能会被收集。详情请至 https://xmr.to/ 查看他们的隐私政策。
diff --git a/app/src/main/res/values-zh-rTW/about.xml b/app/src/main/res/values-zh-rTW/about.xml index 9457bf4f..feef1d0f 100644 --- a/app/src/main/res/values-zh-rTW/about.xml +++ b/app/src/main/res/values-zh-rTW/about.xml @@ -22,9 +22,9 @@Monerujo 只會在本地端使用您的 Monero 金鑰以及公開地址執行必要的處理,並在加密後發送至 Monero 網路進行交易。
其餘的個人資料都不會被 monerujo 收集。
-倘若您有使用 USD/EUR 匯兌的功能(可選用),monerujo 將透過 kraken.com 的公開 - API 抓取目前的匯率。若欲了解您要求的資料會如何被收集及使用,請至 https://www.kraken.com/legal/privacy - 觀看他們的隱私權政策,特別是「Information We Collect Automatically」章節。
+倘若您有使用匯兌的功能(可選用),monerujo 將透過 coinmarketcap.com 的公開 + API 抓取目前的匯率。若欲了解您要求的資料會如何被收集及使用,請至 https://coinmarketcap.com/privacy + 觀看他們的隱私權政策。
若您想使用本 App 支付款項至 BTC 位址,您將使用 XMR.TO 所提供的服務。Monerujo 將發送 BTC 目標位址以及金額至 XMR.TO,您的 IP 在此時也可能會被收集。詳情請至 https://xmr.to/ 觀看他們的隱私權政策。
diff --git a/app/src/main/res/values/about.xml b/app/src/main/res/values/about.xml index d7e32711..16f0cc2d 100644 --- a/app/src/main/res/values/about.xml +++ b/app/src/main/res/values/about.xml @@ -30,11 +30,10 @@ in encrypted form.Other personal data is not collected by the app.
-If you use the USD/EUR exchange (optional) functionality, monerujo fetches the exchange - rate through the public API of kraken.com. - See their privacy policy at https://www.kraken.com/legal/privacy for - details on how data in your requests is collected (especially the - section "Information We Collect Automatically").
+If you use the exchange (optional) functionality, monerujo fetches the exchange + rate through the public API of coinmarketcap.com. + See their privacy policy at https://coinmarketcap.com/privacy for + details on how data in your requests is collected.
If you use the app to pay to BTC addresses, you will be using the XMR.TO service. See their privacy policy at https://xmr.to/ for details. Monerujo send them the BTC destination address and amount. Your IP will also be collectable.
@@ -624,4 +623,4 @@DISCLAIMER
THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.