Merge pull request #37355 from dsnetprofitxl/fix-exchange-rate

fix: change currency exchange API to api.frankfurter.app
This commit is contained in:
ruthra kumar
2023-10-04 21:58:13 +05:30
committed by GitHub
2 changed files with 8 additions and 9 deletions

View File

@@ -75,7 +75,7 @@ class TestCurrencyExchange(unittest.TestCase):
self.clear_cache() self.clear_cache()
exchange_rate = get_exchange_rate("USD", "INR", "2015-12-15", "for_selling") exchange_rate = get_exchange_rate("USD", "INR", "2015-12-15", "for_selling")
self.assertFalse(exchange_rate == 60) self.assertFalse(exchange_rate == 60)
self.assertEqual(flt(exchange_rate, 3), 66.999) self.assertEqual(flt(exchange_rate, 3), 66.894)
def test_exchange_rate_strict(self): def test_exchange_rate_strict(self):
# strict currency settings # strict currency settings
@@ -87,7 +87,7 @@ class TestCurrencyExchange(unittest.TestCase):
self.clear_cache() self.clear_cache()
exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15", "for_buying") exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15", "for_buying")
self.assertEqual(flt(exchange_rate, 3), 67.235) self.assertEqual(flt(exchange_rate, 3), 67.79)
exchange_rate = get_exchange_rate("USD", "INR", "2016-01-30", "for_selling") exchange_rate = get_exchange_rate("USD", "INR", "2016-01-30", "for_selling")
self.assertEqual(exchange_rate, 62.9) self.assertEqual(exchange_rate, 62.9)
@@ -95,7 +95,7 @@ class TestCurrencyExchange(unittest.TestCase):
# Exchange rate as on 15th Dec, 2015 # Exchange rate as on 15th Dec, 2015
self.clear_cache() self.clear_cache()
exchange_rate = get_exchange_rate("USD", "INR", "2015-12-15", "for_buying") exchange_rate = get_exchange_rate("USD", "INR", "2015-12-15", "for_buying")
self.assertEqual(flt(exchange_rate, 3), 66.999) self.assertEqual(flt(exchange_rate, 3), 66.894)
def test_exchange_rate_strict_switched(self): def test_exchange_rate_strict_switched(self):
# Start with allow_stale is True # Start with allow_stale is True
@@ -108,4 +108,4 @@ class TestCurrencyExchange(unittest.TestCase):
# Will fetch from fixer.io # Will fetch from fixer.io
self.clear_cache() self.clear_cache()
exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15", "for_buying") exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15", "for_buying")
self.assertEqual(flt(exchange_rate, 3), 67.235) self.assertEqual(flt(exchange_rate, 3), 67.79)

View File

@@ -113,13 +113,12 @@ def get_exchange_rate(from_currency, to_currency, transaction_date=None, args=No
if not value: if not value:
import requests import requests
api_url = "https://api.exchangerate.host/convert" api_url = f"https://api.frankfurter.app/{transaction_date}"
response = requests.get( response = requests.get(api_url, params={"from": from_currency, "to": to_currency})
api_url, params={"date": transaction_date, "from": from_currency, "to": to_currency}
)
# expire in 6 hours # expire in 6 hours
response.raise_for_status() response.raise_for_status()
value = response.json()["result"] value = response.json()["rates"][to_currency]
cache.setex(name=key, time=21600, value=flt(value)) cache.setex(name=key, time=21600, value=flt(value))
return flt(value) return flt(value)
except Exception: except Exception: