utils.py 文件源码

python
阅读 16 收藏 0 点赞 0 评论 0

项目:django-audit-tools 作者: PeRDy 项目源码 文件源码
def parse_request_meta(meta):
    """Parses request metadata from string or dict.

    :param meta: request.META
    :type meta: str
    :return: Parsed request metadata
    :rtype: dict
    :raise: ValueError
    """
    metadata = meta
    # Escape double quotes
    meta = unicode(metadata)
    meta = meta.replace(r'"', r'\"')
    meta = re.sub(r'\\"(.*?)\'(.*?)\'(.*?)\\"', r"""'\1\\"\2\\"\3'""", meta)
    # Change single quote with double quote
    meta = re.sub(r"u?\'(.*?)\'", r'"\1"', meta)
    # Remove TERMCAP and LS_COLORS fields
    meta = re.sub(r'"TERMCAP": ".*?",\n', "", meta, re.DOTALL)
    meta = re.sub(r'"LS_COLORS": ".*?",\n', "", meta, re.DOTALL)
    # Change tuples () with lists []
    meta = re.sub(r": \((.+?,.*?)\)", r": [\1]", meta)
    # Change objects <> with empty strings ""
    meta = re.sub(r"<(\w+)(.*?)>(,|\})", r'"<\1>"\3', meta)
    # False and True to lowercase
    meta = meta.replace("False", "false")
    meta = meta.replace("True", "true")
    # Change points . with underscores _ in keys
    meta = re.sub(r'(".+?":)(.+?(,|\}))', lambda m: m.group(1).replace(".", "_") + m.group(2), meta)
    # Parse json
    meta_dict = loads(meta)

    return filter_request_meta(meta_dict)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号