FIX: LBP API call

This commit is contained in:
Marcos Rodriguez Vélez 2022-09-24 16:36:06 -04:00
parent 851fe25599
commit 80d45c323a
No known key found for this signature in database
GPG key ID: 0D64671698D11C5C
4 changed files with 251 additions and 249 deletions

View file

@ -29,8 +29,8 @@ class WidgetAPI {
switch source { switch source {
case "Yadio": case "Yadio":
urlString = "https://api.yadio.io/json/\(endPointKey)" urlString = "https://api.yadio.io/json/\(endPointKey)"
case "BitcoinduLiban": case "YadioConvert":
urlString = "https://bitcoinduliban.org/api.php?key=lbpusd" urlString = "https://api.yadio.io/convert/1/BTC/\(endPointKey)"
case "Exir": case "Exir":
urlString = "https://api.exir.io/v1/ticker?symbol=btc-irt" urlString = "https://api.exir.io/v1/ticker?symbol=btc-irt"
case "wazirx": case "wazirx":
@ -61,11 +61,14 @@ class WidgetAPI {
let unix = Double(lastUpdated / 1_000) let unix = Double(lastUpdated / 1_000)
let lastUpdatedString = ISO8601DateFormatter().string(from: Date(timeIntervalSince1970: unix)) let lastUpdatedString = ISO8601DateFormatter().string(from: Date(timeIntervalSince1970: unix))
latestRateDataStore = WidgetDataStore(rate: String(rateDouble), lastUpdate: lastUpdatedString, rateDouble: rateDouble) latestRateDataStore = WidgetDataStore(rate: String(rateDouble), lastUpdate: lastUpdatedString, rateDouble: rateDouble)
case "BitcoinduLiban": case "YadioConvert":
guard let rateString = json["BTC/LBP"] as? String else { break } guard let rateDict = json as? [String: Any],
guard let rateDouble = Double(rateString) else { break } let rateDouble = rateDict["rate"] as? Double,
let lastUpdatedString = ISO8601DateFormatter().string(from: Date()) let lastUpdated = json["timestamp"] as? Int
latestRateDataStore = WidgetDataStore(rate: rateString, lastUpdate: lastUpdatedString, rateDouble: rateDouble) else { break }
let unix = Double(lastUpdated / 1_000)
let lastUpdatedString = ISO8601DateFormatter().string(from: Date(timeIntervalSince1970: unix))
latestRateDataStore = WidgetDataStore(rate: String(rateDouble), lastUpdate: lastUpdatedString, rateDouble: rateDouble)
case "Exir": case "Exir":
guard let rateDouble = json["last"] as? Double else { break } guard let rateDouble = json["last"] as? Double else { break }
let rateString = String(rateDouble) let rateString = String(rateDouble)

View file

@ -3,7 +3,7 @@ import untypedFiatUnit from './fiatUnits.json';
export const FiatUnitSource = { export const FiatUnitSource = {
CoinDesk: 'CoinDesk', CoinDesk: 'CoinDesk',
Yadio: 'Yadio', Yadio: 'Yadio',
BitcoinduLiban: 'BitcoinduLiban', YadioConvert: 'YadioConvert',
Exir: 'Exir', Exir: 'Exir',
wazirx: 'wazirx', wazirx: 'wazirx',
} as const; } as const;
@ -41,15 +41,15 @@ const RateExtractors = {
return rate; return rate;
}, },
BitcoinduLiban: async (ticker: string): Promise<number> => { YadioConvert: async (ticker: string): Promise<number> => {
let json; let json;
try { try {
const res = await fetch('https://bitcoinduliban.org/api.php?key=lbpusd'); const res = await fetch(`https://api.yadio.io/convert/1/BTC/${ticker}`);
json = await res.json(); json = await res.json();
} catch (e: any) { } catch (e: any) {
throw new Error(`Could not update rate for ${ticker}: ${e.message}`); throw new Error(`Could not update rate for ${ticker}: ${e.message}`);
} }
let rate = json?.[`BTC/${ticker}`]; let rate = json?.rate;
if (!rate) throw new Error(`Could not update rate for ${ticker}: data is wrong`); if (!rate) throw new Error(`Could not update rate for ${ticker}: data is wrong`);
rate = Number(rate); rate = Number(rate);
@ -95,7 +95,7 @@ type FiatUnit = {
endPointKey: string; endPointKey: string;
symbol: string; symbol: string;
locale: string; locale: string;
source: 'CoinDesk' | 'Yadio' | 'Exir' | 'BitcoinduLiban' | 'wazirx'; source: 'CoinDesk' | 'Yadio' | 'Exir' | 'wazirx';
}; };
}; };
export const FiatUnit = untypedFiatUnit as FiatUnit; export const FiatUnit = untypedFiatUnit as FiatUnit;

View file

@ -1,326 +1,326 @@
{ {
"USD": { "USD": {
"endPointKey": "USD", "endPointKey": "USD",
"symbol": "$", "locale": "en-US",
"locale": "en-US", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "$"
}, },
"AED": { "AED": {
"endPointKey": "AED", "endPointKey": "AED",
"symbol": "د.إ.", "locale": "ar-AE",
"locale": "ar-AE", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "د.إ."
}, },
"ANG": { "ANG": {
"endPointKey": "ANG", "endPointKey": "ANG",
"symbol": ", "locale": "en-SX",
"locale": "en-SX", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "
}, },
"ARS": { "ARS": {
"endPointKey": "ARS", "endPointKey": "ARS",
"symbol": "$", "locale": "es-AR",
"locale": "es-AR", "source": "Yadio",
"source": "Yadio" "symbol": "$"
}, },
"AUD": { "AUD": {
"endPointKey": "AUD", "endPointKey": "AUD",
"symbol": "$", "locale": "en-AU",
"locale": "en-AU", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "$"
}, },
"AWG": { "AWG": {
"endPointKey": "AWG", "endPointKey": "AWG",
"symbol": ", "locale": "nl-AW",
"locale": "nl-AW", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "
}, },
"BHD": { "BHD": {
"endPointKey": "BHD", "endPointKey": "BHD",
"symbol": "د.ب.", "locale": "ar-BH",
"locale": "ar-BH", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "د.ب."
}, },
"BRL": { "BRL": {
"endPointKey": "BRL", "endPointKey": "BRL",
"symbol": "R$", "locale": "pt-BR",
"locale": "pt-BR", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "R$"
}, },
"CAD": { "CAD": {
"endPointKey": "CAD", "endPointKey": "CAD",
"symbol": "$", "locale": "en-CA",
"locale": "en-CA", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "$"
}, },
"CHF": { "CHF": {
"endPointKey": "CHF", "endPointKey": "CHF",
"symbol": "CHF", "locale": "de-CH",
"locale": "de-CH", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "CHF"
}, },
"CLP": { "CLP": {
"endPointKey": "CLP", "endPointKey": "CLP",
"symbol": "$", "locale": "es-CL",
"locale": "es-CL", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "$"
},
"COP": {
"endPointKey": "COP",
"symbol": "$",
"locale": "es-CO",
"source": "CoinDesk"
},
"CZK": {
"endPointKey": "CZK",
"symbol": "Kč",
"locale": "cs-CZ",
"source": "CoinDesk"
}, },
"CNY": { "CNY": {
"endPointKey": "CNY", "endPointKey": "CNY",
"symbol": "¥", "locale": "zh-CN",
"locale": "zh-CN", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "¥"
},
"COP": {
"endPointKey": "COP",
"locale": "es-CO",
"source": "CoinDesk",
"symbol": "$"
},
"CZK": {
"endPointKey": "CZK",
"locale": "cs-CZ",
"source": "CoinDesk",
"symbol": "Kč"
}, },
"DKK": { "DKK": {
"endPointKey": "DKK", "endPointKey": "DKK",
"symbol": "kr", "locale": "da-DK",
"locale": "da-DK", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "kr"
}, },
"EUR": { "EUR": {
"endPointKey": "EUR", "endPointKey": "EUR",
"symbol": "€", "locale": "en-IE",
"locale": "en-IE", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "€"
}, },
"GBP": { "GBP": {
"endPointKey": "GBP", "endPointKey": "GBP",
"symbol": ", "locale": "en-GB",
"locale": "en-GB", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "
}, },
"HRK": { "HRK": {
"endPointKey": "HRK", "endPointKey": "HRK",
"symbol": "HRK", "locale": "hr-HR",
"locale": "hr-HR", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "HRK"
}, },
"HUF": { "HUF": {
"endPointKey": "HUF", "endPointKey": "HUF",
"symbol": "Ft", "locale": "hu-HU",
"locale": "hu-HU", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "Ft"
}, },
"IDR": { "IDR": {
"endPointKey": "IDR", "endPointKey": "IDR",
"symbol": "Rp", "locale": "id-ID",
"locale": "id-ID", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "Rp"
}, },
"ILS": { "ILS": {
"endPointKey": "ILS", "endPointKey": "ILS",
"symbol": "₪", "locale": "he-IL",
"locale": "he-IL", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "₪"
}, },
"INR": { "INR": {
"endPointKey": "INR", "endPointKey": "INR",
"symbol": "₹", "locale": "hi-HN",
"locale": "hi-HN", "source": "wazirx",
"source": "wazirx" "symbol": "₹"
},
"IRT": {
"endPointKey": "IRT",
"symbol": "تومان",
"locale": "fa-IR",
"source": "Exir"
}, },
"IRR": { "IRR": {
"endPointKey": "IRR", "endPointKey": "IRR",
"symbol": "﷼", "locale": "fa-IR",
"locale": "fa-IR", "source": "Exir",
"source": "Exir" "symbol": "﷼"
},
"IRT": {
"endPointKey": "IRT",
"locale": "fa-IR",
"source": "Exir",
"symbol": "تومان"
}, },
"ISK": { "ISK": {
"endPointKey": "ISK", "endPointKey": "ISK",
"symbol": "kr", "locale": "is-IS",
"locale": "is-IS", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "kr"
}, },
"JPY": { "JPY": {
"endPointKey": "JPY", "endPointKey": "JPY",
"symbol": ", "locale": "ja-JP",
"locale": "ja-JP", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "
}, },
"KES": { "KES": {
"endPointKey": "KES", "endPointKey": "KES",
"symbol": "Ksh", "locale": "en-KE",
"locale": "en-KE", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "Ksh"
}, },
"KRW": { "KRW": {
"endPointKey": "KRW", "endPointKey": "KRW",
"symbol": "₩", "locale": "ko-KR",
"locale": "ko-KR", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "₩"
}, },
"KWD": { "KWD": {
"endPointKey": "KWD", "endPointKey": "KWD",
"symbol": "د.ك.", "locale": "ar-KW",
"locale": "ar-KW", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "د.ك."
}, },
"LBP": { "LBP": {
"endPointKey": "LBP", "endPointKey": "LBP",
"symbol": "ل.ل.", "locale": "ar-LB",
"locale": "ar-LB", "source": "YadioConvert",
"source": "BitcoinduLiban" "symbol": "ل.ل."
},
"MZN": {
"endPointKey": "MZN",
"symbol": "MTn",
"locale": "seh-MZ",
"source": "CoinDesk"
}, },
"MXN": { "MXN": {
"endPointKey": "MXN", "endPointKey": "MXN",
"symbol": "$", "locale": "es-MX",
"locale": "es-MX", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "$"
}, },
"MYR": { "MYR": {
"endPointKey": "MYR", "endPointKey": "MYR",
"symbol": "RM", "locale": "ms-MY",
"locale": "ms-MY", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "RM"
},
"MZN": {
"endPointKey": "MZN",
"locale": "seh-MZ",
"source": "CoinDesk",
"symbol": "MTn"
}, },
"NGN": { "NGN": {
"endPointKey": "NGN", "endPointKey": "NGN",
"symbol": "₦", "locale": "en-NG",
"locale": "en-NG", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "₦"
}, },
"NOK": { "NOK": {
"endPointKey": "NOK", "endPointKey": "NOK",
"symbol": "kr", "locale": "nb-NO",
"locale": "nb-NO", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "kr"
}, },
"NZD": { "NZD": {
"endPointKey": "NZD", "endPointKey": "NZD",
"symbol": "$", "locale": "en-NZ",
"locale": "en-NZ", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "$"
}, },
"OMR": { "OMR": {
"endPointKey": "OMR", "endPointKey": "OMR",
"symbol": "ر.ع.", "locale": "ar-OM",
"locale": "ar-OM", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "ر.ع."
},
"PLN": {
"endPointKey": "PLN",
"symbol": "zł",
"locale": "pl-PL",
"source": "CoinDesk"
}, },
"PHP": { "PHP": {
"endPointKey": "PHP", "endPointKey": "PHP",
"symbol": "₱", "locale": "en-PH",
"locale": "en-PH", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "₱"
},
"PLN": {
"endPointKey": "PLN",
"locale": "pl-PL",
"source": "CoinDesk",
"symbol": "zł"
}, },
"QAR": { "QAR": {
"endPointKey": "QAR", "endPointKey": "QAR",
"symbol": "ر.ق.", "locale": "ar-QA",
"locale": "ar-QA", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "ر.ق."
}, },
"RUB": { "RUB": {
"endPointKey": "RUB", "endPointKey": "RUB",
"symbol": "₽", "locale": "ru-RU",
"locale": "ru-RU", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "₽"
}, },
"SAR": { "SAR": {
"endPointKey": "SAR", "endPointKey": "SAR",
"symbol": "ر.س.", "locale": "ar-SA",
"locale": "ar-SA", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "ر.س."
},
"SGD": {
"endPointKey": "SGD",
"symbol": "S$",
"locale": "zh-SG",
"source": "CoinDesk"
}, },
"SEK": { "SEK": {
"endPointKey": "SEK", "endPointKey": "SEK",
"symbol": "kr", "locale": "sv-SE",
"locale": "sv-SE", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "kr"
}, },
"TRY": { "SGD": {
"endPointKey": "TRY", "endPointKey": "SGD",
"symbol": "₺", "locale": "zh-SG",
"locale": "tr-TR", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "S$"
}, },
"THB": { "THB": {
"endPointKey": "THB", "endPointKey": "THB",
"symbol": "฿", "locale": "th-TH",
"locale": "th-TH", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "฿"
},
"TRY": {
"endPointKey": "TRY",
"locale": "tr-TR",
"source": "CoinDesk",
"symbol": "₺"
}, },
"TWD": { "TWD": {
"endPointKey": "TWD", "endPointKey": "TWD",
"symbol": "NT$", "locale": "zh-Hant-TW",
"locale": "zh-Hant-TW", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "NT$"
}, },
"TZS": { "TZS": {
"endPointKey": "TZS", "endPointKey": "TZS",
"symbol": "TSh", "locale": "en-TZ",
"locale": "en-TZ", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "TSh"
}, },
"UAH": { "UAH": {
"endPointKey": "UAH", "endPointKey": "UAH",
"symbol": "₴", "locale": "uk-UA",
"locale": "uk-UA", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "₴"
}, },
"UGX": { "UGX": {
"endPointKey": "UGX", "endPointKey": "UGX",
"symbol": "USh", "locale": "en-UG",
"locale": "en-UG", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "USh"
}, },
"UYU": { "UYU": {
"endPointKey": "UYU", "endPointKey": "UYU",
"symbol": "$", "locale": "es-UY",
"locale": "es-UY", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "$"
}, },
"VEF": { "VEF": {
"endPointKey": "VEF", "endPointKey": "VEF",
"symbol": "Bs.", "locale": "es-VE",
"locale": "es-VE", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "Bs."
}, },
"VES": { "VES": {
"endPointKey": "VES", "endPointKey": "VES",
"symbol": "Bs.", "locale": "es-VE",
"locale": "es-VE", "source": "Yadio",
"source": "Yadio" "symbol": "Bs."
}, },
"ZAR": { "ZAR": {
"endPointKey": "ZAR", "endPointKey": "ZAR",
"symbol": "R", "locale": "en-ZA",
"locale": "en-ZA", "source": "CoinDesk",
"source": "CoinDesk" "symbol": "R"
} }
} }

View file

@ -35,12 +35,11 @@ describe('currency', () => {
cur = JSON.parse(await AsyncStorage.getItem(currency.EXCHANGE_RATES)); cur = JSON.parse(await AsyncStorage.getItem(currency.EXCHANGE_RATES));
assert.ok(cur.BTC_ARS > 0); assert.ok(cur.BTC_ARS > 0);
// test BitcoinduLiban rate source // test YadioConvert rate source
// disabled, because it throws "Service Temporarily Unavailable" on circleci await currency.setPrefferedCurrency(FiatUnit.LBP);
// await currency.setPrefferedCurrency(FiatUnit.LBP); await currency.init(true);
// await currency.init(true); cur = JSON.parse(await AsyncStorage.getItem(currency.EXCHANGE_RATES));
// cur = JSON.parse(await AsyncStorage.getItem(currency.EXCHANGE_RATES)); assert.ok(cur.BTC_LBP > 0);
// assert.ok(cur.BTC_LBP > 0);
// test Exir rate source // test Exir rate source
await currency.setPrefferedCurrency(FiatUnit.IRT); await currency.setPrefferedCurrency(FiatUnit.IRT);