شرکتی به نام 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 اجرا کنید. سرویس Backend بهطور خودکار روی http://localhost:8080 شروع به کار میکندبا فرض اینکه تبادل ارز خارجی پاسخ نرخهای تبدیل زیر را برگردانده باشد (ناقص):
{
"base": "USD",
"rates": {
// omitted
"GBP": 0.73584,
// omitted
}
}
تابع باید 735.84000 را برگرداند
با فرض اینکه تبادل ارز خارجی پاسخ نرخهای تبدیل زیر را برگردانده باشد (ناقص):
{
"base": "GBP",
"rates": {
// omitted
"USD": 1.35898,
// omitted
}
}
تابع باید 1358.9800 را برگرداند