def set_user_remark(cls, session, username, remark): """Set user remark api.""" api_path = cls.api_url_template.format(schema=cls.schema, endpoint=session.wx_endpoint, url=cls.oplog_url) wx_session_data = session.get_wx_session_data() headers = {'Content-Type': 'application/json; charset=utf-8'} pass_ticket = wx_session_data['pass_ticket'] params = {'pass_ticket': pass_ticket} base_request = cls.get_base_request(wx_session_data) data = { 'BaseRequest': base_request, 'UserName': username, 'RemarkName': remark, 'CmdId': 2 } res = session.post(api_path, params=params, data=json_dumps(data, compact=True, ensure_ascii=False).encode(), headers=headers, timeout=cls.low_timeout) return decode_json_response(res)
def do_sync(cls, session): """Do WeChat session status sync.""" api_path = cls.api_url_template.format(schema=cls.schema, endpoint=session.wx_endpoint, url=cls.do_sync_url) wx_session_data = session.get_wx_session_data() headers = {'Content-Type': 'application/json; charset=utf-8'} wxsid = wx_session_data['wxsid'] skey = wx_session_data['skey'] pass_ticket = wx_session_data['pass_ticket'] params = {'sid': wxsid, 'pass_ticket': pass_ticket, 'skey': skey} base_request = cls.get_base_request(wx_session_data) sync_key = wx_session_data['sync_key'] data = {'BaseRequest': base_request, 'SyncKey': sync_key} res = session.post(api_path, params=params, data=json_dumps(data, compact=True, ensure_ascii=False).encode(), headers=headers, timeout=cls.middle_timeout) return decode_json_response(res)
def send_gif_message(cls, session, message): """Send gif message api.""" api_path = cls.api_url_template.format(schema=cls.schema, endpoint=session.wx_endpoint, url=cls.sendmsg_gif_url) wx_session_data = session.get_wx_session_data() headers = {'Content-Type': 'application/json; charset=utf-8'} pass_ticket = wx_session_data['pass_ticket'] params = {'pass_ticket': pass_ticket, 'fun': 'sys', 'f': 'json'} base_request = cls.get_base_request(wx_session_data) msg_value = message.to_value() msg_value['EmojiFlag'] = 2 data = {'BaseRequest': base_request, 'Scene': 0, 'Msg': msg_value} res = session.post(api_path, params=params, data=json_dumps(data, compact=True, ensure_ascii=False).encode(), headers=headers, timeout=cls.low_timeout) return decode_json_response(res)
def mget_contact_list(cls, session, user_list): """Batch get user contact list.""" api_path = cls.api_url_template.format(schema=cls.schema, endpoint=session.wx_endpoint, url=cls.batch_contact_list_url) wx_session_data = session.get_wx_session_data() headers = {'Content-Type': 'application/json; charset=utf-8'} params = { 'pass_ticket': wx_session_data['pass_ticket'], 'r': cls.get_client_msg_id(), 'type': 'ex' } base_request = cls.get_base_request(wx_session_data) data = { 'BaseRequest': base_request, 'Count': len(user_list), 'List': user_list } res = session.post(api_path, params=params, data=json_dumps(data, compact=True, ensure_ascii=False).encode(), headers=headers, timeout=cls.middle_timeout) return decode_json_response(res)
def wx_init(cls, session): """Initialize WeChat session.""" api_path = cls.api_url_template.format( schema=cls.schema, endpoint=session.wx_endpoint, url=cls.init_url) wx_session_data = session.get_wx_session_data() headers = {'Content-Type': 'application/json; charset=utf-8'} params = {'pass_ticket': wx_session_data['pass_ticket']} data = {'BaseRequest': cls.get_base_request(wx_session_data)} res = session.post( api_path, params=params, data=json_dumps(data, compact=True), headers=headers, timeout=cls.high_timeout) return decode_json_response(res)
def notify_status(cls, session, user): """Notify session status.""" api_path = cls.api_url_template.format( schema=cls.schema, endpoint=session.wx_endpoint, url=cls.status_notify_url) wx_session_data = session.get_wx_session_data() params = {'pass_ticket': wx_session_data['pass_ticket']} username = user['UserName'] data = {'Code': 3, 'FromUserName': username, 'ToUserName': username} data['BaseRequest'] = cls.get_base_request(wx_session_data) data['ClientMsgId'] = cls.get_client_msg_id() res = session.post( api_path, params=params, data=json_dumps(data, compact=True), timeout=cls.middle_timeout) return decode_json_response(res)
def send_image_message(cls, session, message): """Send image message api.""" api_path = cls.api_url_template.format( schema=cls.schema, endpoint=session.wx_endpoint, url=cls.sendmsg_img_url) wx_session_data = session.get_wx_session_data() headers = {'Content-Type': 'application/json; charset=utf-8'} params = {'fun': 'async', 'f': 'json'} base_request = cls.get_base_request(wx_session_data) msg_value = message.to_value() data = {'BaseRequest': base_request, 'Scene': 0, 'Msg': msg_value} res = session.post( api_path, params=params, data=json_dumps(data, compact=True), headers=headers, timeout=cls.low_timeout) return decode_json_response(res)
def upload_chunk(chunk_index=0, chunk_num=1): data = { 'id': 'WU_FILE_0', 'name': filename, 'type': data_media_type, 'lastModifiedDate': file_obj.last_mtime, 'size': data_len, 'mediatype': file_obj.short_type(), 'uploadmediarequest': json_dumps(upload_req, compact=True, ensure_ascii=False).encode(), 'webwx_data_ticket': session_cookies['webwx_data_ticket'], 'pass_ticket': pass_ticket } if chunk_num > 1: data['chunk'] = chunk_index data['chunks'] = chunk_num files = { 'filename': (filename, file_obj.read(cls.max_file_body), data_media_type) } else: files = {'filename': (filename, file_obj, data_media_type)} res = session.post(api_path, params=params, data=data, files=files, timeout=cls.high_timeout) data = decode_json_response(res) return data