def sign(self, request: Request) -> Request: """ Generate BINANCE signature. """ security = request.data["security"] if security == Security.NONE: request.data = None return request if request.params: path = request.path + "?" + urllib.parse.urlencode(request.params) else: request.params = dict() path = request.path if security == Security.SIGNED: timestamp = int(time.time() * 1000) if self.time_offset > 0: timestamp -= abs(self.time_offset) elif self.time_offset < 0: timestamp += abs(self.time_offset) request.params["timestamp"] = timestamp query = urllib.parse.urlencode(sorted(request.params.items())) signature = hmac.new(self.secret, query.encode( "utf-8"), hashlib.sha256).hexdigest() query += "&signature={}".format(signature) path = request.path + "?" + query request.path = path request.params = {} request.data = {} # Add headers headers = { "Content-Type": "application/x-www-form-urlencoded", "Accept": "application/json", "X-MBX-APIKEY": self.key } if security in [Security.SIGNED, Security.API_KEY]: request.headers = headers return request
def sign(self, request: Request) -> Request: """ Generate HUOBI signature. """ request.headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36" } params_with_signature = create_signature(self.key, request.method, self.host, request.path, self.secret, request.params) request.params = params_with_signature if request.method == "POST": request.headers["Content-Type"] = "application/json" if request.data: request.data = json.dumps(request.data) return request