-
Notifications
You must be signed in to change notification settings - Fork 0
/
extensions.py
32 lines (27 loc) · 1.19 KB
/
extensions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import requests
import json
from config import API_KEY, DATA_TICKER
class APIException(Exception):
pass
class Converter:
@staticmethod
def get_price(base, quote, amount):
try:
base_ticker = DATA_TICKER[base]
except KeyError:
raise APIException(f'Валюта {base} не найдена!\nСписок доступных валют см. /values')
try:
quote_ticker = DATA_TICKER[quote]
except KeyError:
raise APIException(f'Валюта {quote} не найдена!\nСписок доступных валют см. /values')
if base_ticker == quote_ticker:
raise APIException(f'Невозможно перевести одинаковые валюты {base}')
try:
amount = float(amount.replace(',', '.'))
except ValueError:
raise APIException(f'Неудалось обработать количество: {amount}')
url = f"https://v6.exchangerate-api.com/v6/{API_KEY}/pair/{base_ticker}/{quote_ticker}/{amount}"
r = requests.get(url)
resp = json.loads(r.content)
result = float(resp['conversion_result'])
return result