Une entreprise appelée Insure Everyone paie ses employés dans des devises étrangères. Mais, en raison d'exigences législatives, le salaire doit être converti dans la devise locale. Ses employés sont répartis dans le monde entier. Le service RH d'Insure Everyone cherche l'aide d'un développeur talentueux pour écrire un programme qui convertit le salaire de chaque employé dans sa devise locale. Insure Everyone s'appuie sur les taux de change fournis par une API externe.
À partir de cette API externe de taux de change, tu dois écrire une fonction qui prend une source currency, un salary (dans la devise source) et la local currency de l'employé, et qui renvoie le salaire dans la devise locale.
La réponse de l'API externe de change est donnée ci-dessous :
Remarque : les
ratessont tronqués pour garder l'énoncé court
{
"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 exemple de requête pour obtenir les taux de change 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 et targetCurrency sont des codes de devise ISO (alphabétiques). Les entrées de test peuvent contenir des codes de devise invalides.5 décimales.Tu dois écrire ton code à l'intérieur de la fonction suivante.
# 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, ou en écrivant des tests unitaires et en les exécutant avec bal test. Le service backend démarrera automatiquement à l'adresse http://localhost:8080
En supposant que le service externe de change ait renvoyé la réponse de taux de conversion suivante (omise) :
{
"base": "USD",
"rates": {
// omitted
"GBP": 0.73584,
// omitted
}
}
La fonction doit renvoyer 735.84000
En supposant que le service externe de change ait renvoyé la réponse de taux de conversion suivante (omise) :
{
"base": "GBP",
"rates": {
// omitted
"USD": 1.35898,
// omitted
}
}
La fonction doit renvoyer 1358.9800
Inscris-toi sur Exercism pour apprendre et maîtriser Ballerina avec 60 exercices, et un vrai mentorat humain, le tout gratuitement.