Компанія Insure Everyone платить своїм працівникам в іноземних валютах. Але через вимоги законодавства зарплату потрібно конвертувати в місцеву валюту. Її працівники розкидані по всьому світу. Відділ кадрів Insure Everyone шукає талановитого розробника, який допоможе створити програму для конвертації зарплати кожного працівника у відповідну місцеву валюту. Insure Everyone покладається на курси обміну, які надає зовнішній API.
Маючи зовнішній API курсів обміну, нам потрібно написати функцію, яка приймає source currency, salary (у вихідній валюті) та local currency працівника і повертає зарплату в місцевій валюті.
Нижче наведено відповідь від зовнішнього API обміну валют:
Примітка: значення
ratesскорочено, щоб умова задачі залишалася короткою
{
"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,
}
}
Приклад запиту на отримання курсів обміну для 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 і targetCurrency - це коди валют ISO (алфавітні). Тестові вхідні дані можуть містити недійсні коди валют.5 знаків після коми.Код потрібно написати всередині такої функції.
# 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, або написати модульні тести й запустити їх командою bal test. Бекенд-сервіс запуститься автоматично за адресою http://localhost:8080
Припустімо, що зовнішній обмін валют повернув таку відповідь із курсами конвертації (скорочено):
{
"base": "USD",
"rates": {
// omitted
"GBP": 0.73584,
// omitted
}
}
Функція має повернути 735.84000
Припустімо, що зовнішній обмін валют повернув таку відповідь із курсами конвертації (скорочено):
{
"base": "GBP",
"rates": {
// omitted
"USD": 1.35898,
// omitted
}
}
Функція має повернути 1358.9800