Подскажите, что мне переделать?
import urllib, http.client import time import json # эти модули нужны для генерации подписи API import hmac, hashlib from exmo_key import * # ключи API, которые предоставила exmo API_KEY = a # обратите внимание, что добавлена 'b' перед строкой API_SECRET = b CURRENCY='RUB' # базовые настройки API_URL = 'api.exmo.com' API_VERSION = 'v1' # Свой класс исключений class ScriptError(Exception): pass class ScriptQuitCondition(Exception): pass # все обращения к API проходят через эту функцию def call_api(api_method, http_method="POST", **kwargs): # Составляем словарь {ключ:значение} для отправки на биржу # пока что в нём {'nonce':123172368123} payload = {'nonce': int(round(time.time()*1000))} # Если в ф-цию переданы параметры в формате ключ:значение if kwargs: # добавляем каждый параметр в словарь payload # Получится {'nonce':123172368123, 'param1':'val1', 'param2':'val2'} payload.update(kwargs) # Переводим словарь payload в строку, в формат для отправки через GET/POST и т.п. payload = urllib.parse.urlencode(payload) # Из строки payload получаем "подпись", хешируем с помощью секретного ключа API # sing - получаемый ключ, который будет отправлен на биржу для проверки H = hmac.new(key=API_SECRET, digestmod=hashlib.sha512) H.update(payload.encode('utf-8')) sign = H.hexdigest() # Формируем заголовки request для отправки запроса на биржу. # Передается публичный ключ API и подпись, полученная с помощью hmac headers = {"Content-type": "application/x-www-form-urlencoded", "Key":API_KEY, "Sign":sign, "currency":CURRENCY, "amount":10 } # Создаем подключение к бирже, если в течении 60 сек не удалось подключиться, обрыв соединения conn = http.client.HTTPSConnection(API_URL, timeout=60) # После установления связи, запрашиваем переданный адрес # В заголовке запроса уходят headers, в теле - payload conn.request(http_method,"/"+API_VERSION + "/" + api_method, payload, headers) # Получаем ответ с биржи и читаем его в переменную response response = conn.getresponse().read() # Закрываем подключение conn.close() return response ex_code=call_api('excode_create') print(ex_code)
conn.request(http_method,"/"+API_VERSION + "/" + api_method, payload, headers)
curl –location –request POST 'https://api.exmo.com/v1/excode_create' \
–header ‘Content-Type: application/x-www-form-urlencoded’ \
–header ‘Key: ’ \
–header ‘Sign: ’ \
–data-urlencode ‘currency=BTC’ \
–data-urlencode ‘amount=10’ \
–data-urlencode ‘login=test_user’ \
–data-urlencode ‘nonce=1592989431’