Un'azienda chiamata Insure Everyone paga i propri dipendenti in valute straniere. Ma, per obblighi di legge, lo stipendio deve essere convertito nella valuta locale. I suoi dipendenti sono sparsi in tutto il mondo. Il reparto risorse umane di Insure Everyone cerca l'aiuto di uno sviluppatore di talento per creare un programma che converta lo stipendio di ogni dipendente nella valuta locale corrispondente. Insure Everyone si affida ai tassi di cambio forniti da un'API esterna.
Data l'API esterna dei tassi di cambio, devi scrivere una funzione che riceve source currency, salary (nella valuta di origine) e la local currency del dipendente, e restituisce lo stipendio nella valuta locale.
La risposta dell'API esterna di cambio valute è riportata di seguito:
Nota: i
ratessono troncati per mantenere breve la descrizione del problema
{
"base": "EUR",
"rates": {
"AED": 4.167972,
"AFN": 118.91123,
"ALL": 121.353306,
"AMD": 546.175542,
"ANG": 2.035384,
"AOA": 629.106987,
"ARS": 116.624363,
"AUD": 1.580224,
"AWG": 2.042846,
"AZN": 1.92923,
"BAM": 1.95468,
"BBD": 2.26981,
"BDT": 97.024176,
"BGN": 1.956957,
"BHD": 0.428175,
"BIF": 2257.462616,
"BMD": 1.134504,
"BND": 1.534691,
"BOB": 7.773946,
"BRL": 6.394753,
"BSD": 1.134916,
"BTC": 0.000027,
"BTN": 83.896824,
"BWP": 13.167125,
}
}
Un esempio di richiesta per ottenere i tassi di cambio per USD:
GET http://localhost:8080/rates/USD
{
"base": "USD",
"rates": {
"AED": 3.672477643818380310171368756063197,
"AFN": 104.7748962262571579872079201988508,
"ALL": 106.9266548068103418652047146893925,
"AMD": 481.2454276553169780099231576470961,
"ANG": 1.793414695824643301163693331958788,
"AOA": 554.3178661774696212335484143830275,
"ARS": 102.7598951821316197338845611280433,
"AUD": 1.392364754903645275750470737610812,
"AWG": 1.799989602800547350872880138793802,
"AZN": 1.699880432206294535038121596128717,
"BAM": 1.722304900517304728699178180683942,
"BBD": 1.999971804204874171858658003508614,
"BDT": 85.48980589838411660371074286227852,
"BGN": 1.724311207564226937381544618524109,
"BHD": 0.3772729555625457630971671155965922,
"BIF": 1989.092294529751410010035940827599,
"BMD": 0.9996325735447665520331371082216295
// omitted
}
}
salary <= 10000sourceCurrency e targetCurrency sono codici di valuta ISO (alfabetici). L'input dei test può contenere codici di valuta non validi.5 cifre decimali.Devi scrivere il codice all'interno della seguente funzione.
# The exchange rate API base URL
configurable string apiUrl = "http://localhost:8080";
# Convert provided salary to local currency.
#
# + salary - Salary in source currency
# + sourceCurrency - Soruce currency
# + localCurrency - Employee's local currency
# + return - Salary in local currency or error
public function convertSalary(decimal salary, string sourceCurrency, string localCurrency) returns decimal|error {
// TODO: Write your code here
return 0;
}
bal run, oppure scrivendo unit test ed eseguendoli con bal test. Il servizio backend si avvierà automaticamente all'indirizzo http://localhost:8080
Supponendo che il servizio esterno di cambio valute abbia restituito la seguente risposta con i tassi di conversione (omessa):
{
"base": "USD",
"rates": {
// omitted
"GBP": 0.73584,
// omitted
}
}
La funzione deve restituire 735.84000
Supponendo che il servizio esterno di cambio valute abbia restituito la seguente risposta con i tassi di conversione (omessa):
{
"base": "GBP",
"rates": {
// omitted
"USD": 1.35898,
// omitted
}
}
La funzione deve restituire 1358.9800
Iscriviti a Exercism per imparare e padroneggiare Ballerina con 60 esercizi e il mentoring di persone reali, tutto gratis.