Una empresa llamada Insure Everyone paga a sus empleados en monedas extranjeras. Pero, debido a requisitos legislativos, el salario debe convertirse a la moneda local. Sus empleados están repartidos por todo el mundo. El departamento de recursos humanos de Insure Everyone busca la ayuda de un desarrollador con talento para crear un programa que convierta el salario de cada empleado a su correspondiente moneda local. Insure Everyone depende de los tipos de cambio que proporciona una API externa.
Dada la API externa de tipos de cambio, tienes que escribir una función que reciba source currency, salary (en la moneda de origen) y la local currency del empleado, y que devuelva el salario en la moneda local.
La respuesta de la API externa de cambio de monedas es la siguiente:
Nota: los
ratesestán truncados para que el enunciado del problema sea más corto
{
"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 ejemplo de petición para obtener los tipos de cambio de 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 y targetCurrency son códigos de moneda ISO (alfabéticos). La entrada de prueba puede contener códigos de moneda no válidos.5 decimales.Tienes que escribir tu código dentro de la siguiente función.
# 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 o escribiendo pruebas unitarias y ejecutándolas con bal test. El servicio de backend se iniciará automáticamente en http://localhost:8080
Suponiendo que el servicio externo de cambio de monedas devolvió la siguiente respuesta de tipos de conversión (omitida):
{
"base": "USD",
"rates": {
// omitted
"GBP": 0.73584,
// omitted
}
}
La función debe devolver 735.84000
Suponiendo que el servicio externo de cambio de monedas devolvió la siguiente respuesta de tipos de conversión (omitida):
{
"base": "GBP",
"rates": {
// omitted
"USD": 1.35898,
// omitted
}
}
La función debe devolver 1358.9800
Regístrate en Exercism para aprender y dominar Ballerina con 60 ejercicios y mentoría humana real, todo gratis.