Una empresa llamada Insure Everyone les 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 moneda local correspondiente. Insure Everyone depende de los tipos de cambio que proporciona una API externa.
Dada la API externa de tipos de cambio, debes escribir una función que reciba una source currency, un 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 tipos de cambio es la siguiente:
Nota: los
ratesestán truncados para que el enunciado 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 solicitud 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 las pruebas puede contener códigos de moneda no válidos.5 decimales.Debes 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 escribir pruebas unitarias y ejecutarlas con bal test. El servicio de backend se iniciará automáticamente en http://localhost:8080
Suponiendo que el servicio externo de tipos de cambio 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 tipos de cambio 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.