def on_open(self, ws): #print("### open ###") self.logger.info("[Sub][" + str(self.id) + "] Connected to server") self.ws = ws self.last_receive_time = get_current_timestamp() self.state = ConnectionState.CONNECTED self.__watch_dog.on_connection_created(self) if self.request.is_trading: try: if self.request.api_version == ApiVersion.VERSION_V1: builder = UrlParamsBuilder() create_signature(self.__api_key, self.__secret_key, "GET", self.url, builder) builder.put_url("op", "auth") self.send(builder.build_url_to_json()) elif self.request.api_version == ApiVersion.VERSION_V2: builder = UrlParamsBuilder() create_signature_v2(self.__api_key, self.__secret_key, "GET", self.url, builder) self.send(builder.build_url_to_json()) else: self.on_error( "api version for create the signature fill failed") except Exception as e: self.on_error("Unexpected error when create the signature: " + str(e)) else: if self.request.subscription_handler is not None: self.request.subscription_handler(self) return
def __create_request_by_get_with_signature(self, url, builder): request = RestApiRequest() request.method = "GET" request.host = self.__server_url create_signature(self.__api_key, self.__secret_key, request.method, request.host + url, builder) request.header.update({"Content-Type": "application/x-www-form-urlencoded"}) request.url = url + builder.build_url() return request
def test_request(self): builder = UrlParamsBuilder() huobi.impl.utils.apisignature.utc_now = mock.Mock(return_value="123") create_signature("123", "456", "GET", "http://host/url", builder) self.assertEqual( "?AccessKeyId=123&SignatureVersion=2&SignatureMethod=HmacSHA256&Timestamp=123&Signature=Hhiaq8xYQPiBZOyWV37MdQutLo4f0ZOHiJtG3p%2BnILc%3D", builder.build_url()) return
def __create_request_by_post_with_signature(self, url, builder): request = RestApiRequest() request.method = "POST" request.host = self.__server_url create_signature(self.__api_key, self.__secret_key, request.method, request.host + url, builder) request.header.update({'Content-Type': 'application/json'}) request.post_body = builder.post_map request.url = url + builder.build_url() return request