def __send_command(self, command, args=None, on_resp_callback=None, need_sig=True): '''Send a raw command.''' rid = str(uuid.uuid1()) expires = int(round(time.time() * 1000)) + 2500 + self.time_delta msg = {'req': command, 'rid': rid, 'expires': expires} if args is not None: msg['args'] = args if need_sig and self.api_secret is not None: # signature = MD5(Req+ReqId+Args+Expires+API.SecretKey) body = str(command) + str(rid) + \ (my_json_marshal(args) if args else "") + \ str(expires) + self.api_secret # sig = hmac.new(self.api_secret.encode('utf-8'), body.encode('utf-8'), digestmod=hashlib.md5).hexdigest() msg['signature'] = hashlib.md5(body.encode('utf-8')).hexdigest() self._cmd_callback_lock.acquire() self._cmd_callback_dict[rid] = on_resp_callback self._cmd_callback_lock.release() buf = my_json_marshal(msg) # self.logger.debug("MSG-buf: %s", buf) self.ws.send(buf)
def on_cmd_login_resp(_, code, data): if code != 0: self.logger.info("ERROR: cmd=Login, code=%d, data=%s", code, my_json_marshal(data)) self.exit() return self.uid = data.pop("UserId", "") # self.UserName = data.pop("UserName", "") self.logger.debug("DEBUG: login ok, uid=%s data=%s", self.uid, my_json_marshal(data))
def on_cmd_time_resp(_, code, data): if code != 0: self.logger.error("ERROR: cmd=Time, code=%d, data=%s", code, my_json_marshal(data)) self.exit() return server_tm = data.pop("time", local_tm) self.time_delta = server_tm - local_tm self.logger.debug("DEBUG: local_tm:%d, server_tm:%d, delta %d", local_tm, server_tm, self.time_delta) self.__callback(cb, self.time_delta)
def __send_command(self, command, args=None, on_resp_callback=None): '''Send a raw command.''' rid = str(uuid.uuid1()) expires = int(round(time.time() * 1000)) + 2500 + self.time_delta msg = {'req': command, 'rid': rid, 'expires': expires} if args is not None: msg['args'] = args self._cmd_callback_lock.acquire() self._cmd_callback_dict[rid] = on_resp_callback self._cmd_callback_lock.release() buf = my_json_marshal(msg) # self.logger.debug("MSG-buf: %s", buf) self.ws.send(buf)
def on_cmd_time_resp(_, code, data): if code != 0: self.logger.error("ERROR: cmd=Time, code=%d, data=%s", code, my_json_marshal(data)) self.exit() return server_tm = data.pop("time", local_tm) self.time_delta = server_tm - local_tm self.logger.debug("DEBUG: local_tm:%d, server_tm:%d, delta %d", local_tm, server_tm, self.time_delta) # now send login self.__send_command( 'Login', { 'UserName': self.user_name, 'UserCred': self.api_key, 'DeviceInfo': 'gmex-api-py sample' }, on_cmd_login_resp)
def callback_on_mkt_request_response(_, code, data): logger.debug("on_mkt_resp: %d %s" % (code, my_json_marshal(data)))
def callback_on_mkt_notification(_, data): mkt_notify = GT_Object(data) logger.debug("on_mkt_notification: %s" % my_json_marshal(mkt_notify))
def callback_on_mkt_kline(_, data): mkt_kline = GT_Object(data) logger.debug("on_mkt_kline: %s" % my_json_marshal(mkt_kline))
def callback_on_mkt_index(_, data): mkt_idx = GT_Object(data) logger.debug("on_mkt_index: %s" % my_json_marshal(mkt_idx))
def callback_on_mkt_tick(_, data): mkt_tick = GT_Object(data) logger.debug("on_mkt_tick: %s" % my_json_marshal(mkt_tick))
def callback_on_mkt_order20(_, data): mkt_ord20 = GT_Object(data) logger.debug("on_mkt_order20: %s" % my_json_marshal(mkt_ord20))
def callback_on_mkt_orderl2(_, data): mkt_ordl2 = GT_Object(data) logger.debug("on_mkt_orderl2: %s" % my_json_marshal(mkt_ordl2))
def callback_on_mkt_trade(_, data): mkt_trd = GT_Object(data) logger.debug("on_mkt_trade: %s" % my_json_marshal(mkt_trd))
def callback_on_wltlog(_, data): wltlog = GT_Object(data) logger.debug("on_wltlog: %s" % my_json_marshal(wltlog))
def json_marshal(self): return my_json_marshal(self.kv)