def get_meta_info_list(account: PlayerAccount):
    logger.info("[{}] get mail meta info".format(account.uid))
    data = META_INFO_DATA.copy()
    data["from"] = int(time.time())
    ret_data = http_client.post_with_seqnum(account, META_INFO_URL,
                                            data=json.dumps(data))
    return ret_data
def get_current_friend(account: PlayerAccount):
    logger.info("[{}] get current friend list".format(account.uid))
    data = CURRENT_FRIEND_DATA.copy()
    ret_data = http_client.post_with_seqnum(account,
                                            SORT_LIST_URL,
                                            data=json.dumps(data))
    return ret_data
def confirm_mission(account: PlayerAccount, mission_id):
    logger.info("[{}] confirm mission id={}".format(account.uid, mission_id))
    data = CONFIRM_MISSION_DATA.copy()
    data["missionId"] = mission_id
    ret_data = http_client.post_with_seqnum(account,
                                            CONFIRM_MISSION_URL,
                                            data=json.dumps(data))
    return ret_data
def exchange_mission_reward(account: PlayerAccount, reward_id):
    logger.info("[{}] exchange mission reward id={}".format(
        account.uid, reward_id))
    data = EXCHANGE_MISSION_REWARDS_DATA.copy()
    data["targetRewardsId"] = reward_id
    ret_data = http_client.post_with_seqnum(account,
                                            EXCHANGE_MISSION_REWARDS_URL,
                                            data=json.dumps(data))
    return ret_data
def auto_confirm_missions_by_type(account: PlayerAccount, mission_type):
    logger.info("[{}] auto confirm {} missions".format(account.uid,
                                                       mission_type))
    data = AUTO_CONFIRM_MISSIONS_DATA.copy()
    data["type"] = mission_type
    ret_data = http_client.post_with_seqnum(account,
                                            AUTO_CONFIRM_MISSIONS_URL,
                                            data=json.dumps(data))
    return ret_data
def search_account(account: PlayerAccount, nickname="", nicknumber=""):
    logger.info("[{}] search friend with {}#{}".format(account.uid, nickname,
                                                       nicknumber))
    data = SEARCH_ACCOUNT_DATA.copy()
    data["param"] = {"nickName": nickname, "nickNumber": nicknumber}
    ret_data = http_client.post_with_seqnum(account,
                                            SORT_LIST_URL,
                                            data=json.dumps(data))
    return ret_data
def get_friend_info(account: PlayerAccount, *uids, uid_list=None):
    id_list = [] if uid_list == None else uid_list
    id_list.extend(list(uids))
    logger.info("[{}] get friend info for uid={}".format(account.uid, id_list))
    data = FRIEND_INFO_DATA.copy()
    data["idList"] = id_list
    ret_data = http_client.post_with_seqnum(account,
                                            FRIEND_INFO_URL,
                                            data=json.dumps(data))
    return ret_data
def receive_all_mail(account: PlayerAccount, *ids, id_list=None):
    id_list = [] if id_list == None else id_list
    id_list.extend(list(ids))
    logger.info("[{}] receive mail for id={}".format(account.uid, id_list))
    data = RECEIVE_ALL_MAIL_DATA.copy()
    # todo: temporary solution
    data["mailIdList"] = list(filter(lambda x: int(x) > 10000, id_list))
    data["sysMailIdList"] = list(filter(lambda x: int(x) <= 10000, id_list))
    ret_data = http_client.post_with_seqnum(account, RECEIVE_ALL_MAIL_URL,
                                            data=json.dumps(data))
    return ret_data
def list_mail_box(account: PlayerAccount, *ids, id_list=None):
    id_list = [] if id_list == None else id_list
    id_list.extend(list(ids))
    logger.info("[{}] get mail info for id={}".format(account.uid, id_list))
    data = LIST_MAILBOX_DATA.copy()
    #todo: temporary solution
    data["mailIdList"] = list(filter(lambda x:int(x)>10000,id_list))
    data["sysMailIdList"] = list(filter(lambda x:int(x)<=10000,id_list))
    ret_data = http_client.post_with_seqnum(account, LIST_MAILBOX_URL,
                                            data=json.dumps(data))
    return ret_data
def search_player_info_by_uid(account: PlayerAccount, *uids, uid_list=None):
    id_list = [] if uid_list == None else uid_list
    id_list.extend(list(uids))
    logger.info("[{}] get search result for uid={}".format(
        account.uid, id_list))
    data = SEARCH_PLAYER_INFO_DATA.copy()
    data["idList"] = id_list
    ret_data = http_client.post_with_seqnum(account,
                                            SEARCH_PLAYER_INFO_URL,
                                            data=json.dumps(data))
    return ret_data
def checkin(account:PlayerAccount):
    logger.info("[{}] checkin".format(account.uid))
    ret_data = http_client.post_with_seqnum(account, CHECKIN_URL,
                                            data=json.dumps(CHECKIN_DATA))
    return ret_data