Track
/
Ballerina
Ballerina
/
Esercizi
/
PaySwitch: convertitore di stipendio
PaySwitch: convertitore di stipendio

PaySwitch: convertitore di stipendio

Medio

Istruzioni

Descrizione del problema

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.

API di cambio valute

La risposta dell'API esterna di cambio valute è riportata di seguito:

Nota: i rates sono 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
  }
}

Vincoli

  • 500 <= salary <= 10000
  • sourceCurrency e targetCurrency sono codici di valuta ISO (alfabetici). L'input dei test può contenere codici di valuta non validi.
  • La precisione del tasso restituito sarà misurata fino a 5 cifre decimali.

Definizione

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

Ambiente di test

  • Puoi testarlo manualmente eseguendo il progetto con bal run, oppure scrivendo unit test ed eseguendoli con bal test. Il servizio backend si avvierà automaticamente all'indirizzo http://localhost:8080

Esempio

Esempio 1

Input:
  • Stipendio: 1000
  • Valuta di origine: USD
  • Valuta di destinazione: GBP
Output:

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

Esempio 2

Input:
  • Stipendio: 1000
  • Valuta di origine: GBP
  • Valuta di destinazione: USD
Output:

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

Suggerimenti

  • Puoi convertire la risposta JSON ricevuta in un tipo definito dall'utente (più precisamente un open record) per accedervi facilmente. Per maggiori informazioni, vedi data binding del client HTTP
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Ballerina Exercism

Vuoi iniziare PaySwitch: convertitore di stipendio?

Iscriviti a Exercism per imparare e padroneggiare Ballerina con 60 esercizi e il mentoring di persone reali, tutto gratis.