Insure Everyone이라는 회사는 직원들에게 외화로 급여를 지급해요. 하지만 법규상의 요구 사항 때문에 급여를 현지 통화로 변환해야 해요. 이 회사의 직원들은 전 세계 곳곳에 있어요. Insure Everyone의 인사 부서는 각 직원의 급여를 해당 현지 통화로 변환하는 프로그램을 만들 능력 있는 개발자의 도움을 찾고 있어요. Insure Everyone은 외부 API에서 제공하는 환율에 의존해요.
외부 환율 API가 주어졌을 때, source currency, salary(source currency 기준), 그리고 직원의 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을 반환해야 해요