Exemple #1
0
def stringify_body(meta_data, request_or_response):
    headers = meta_data['{}_headers'.format(request_or_response)]
    body = meta_data.get('{}_body'.format(request_or_response))

    if isinstance(body, CaseInsensitiveDict):
        body = json.dumps(dict(body), ensure_ascii=False)

    elif isinstance(body, (dict, list)):
        body = json.dumps(body, indent=2, ensure_ascii=False)

    elif isinstance(body, bytes):
        resp_content_type = headers.get("Content-Type", "")
        try:
            if "image" in resp_content_type:
                meta_data["response_data_type"] = "image"
                body = "data:{};base64,{}".format(
                    resp_content_type,
                    b64encode(body).decode('utf-8')
                )
            else:
                body = escape(body.decode("utf-8"))
        except UnicodeDecodeError:
            pass

    elif not isinstance(body, (basestring, numeric_types, Iterable)):
        # class instance, e.g. MultipartEncoder()
        body = repr(body)

    meta_data['{}_body'.format(request_or_response)] = body
def stringify_body(meta_data, request_or_response):
    headers = meta_data['{}_headers'.format(request_or_response)]
    body = meta_data.get('{}_body'.format(request_or_response))

    if isinstance(body, CaseInsensitiveDict):
        body = json.dumps(dict(body), ensure_ascii=False)

    elif isinstance(body, (dict, list)):
        body = json.dumps(body, indent=2, ensure_ascii=False)

    elif isinstance(body, bytes):
        resp_content_type = headers.get("Content-Type", "")
        try:
            if "image" in resp_content_type:
                meta_data["response_data_type"] = "image"
                body = "data:{};base64,{}".format(
                    resp_content_type,
                    b64encode(body).decode('utf-8'))
            else:
                body = escape(body.decode("utf-8"))
        except UnicodeDecodeError:
            pass

    elif not isinstance(body, (basestring, numeric_types, Iterable)):
        # class instance, e.g. MultipartEncoder()
        body = repr(body)

    meta_data['{}_body'.format(request_or_response)] = body
Exemple #3
0
def stringify_data(meta_data, request_or_response):
    headers = meta_data[request_or_response]["headers"]

    request_or_response_dict = meta_data[request_or_response]

    for key, value in request_or_response_dict.items():

        if isinstance(value, list):
            value = json.dumps(value, indent=2, ensure_ascii=False)

        elif isinstance(value, bytes):
            try:
                encoding = meta_data["response"].get("encoding")
                if not encoding or encoding == "None":
                    encoding = "utf-8"

                content_type = meta_data["response"]["content_type"]
                if "image" in content_type:
                    meta_data["response"]["content_type"] = "image"
                    value = "data:{};base64,{}".format(
                        content_type,
                        b64encode(value).decode(encoding)
                    )
                else:
                    value = escape(value.decode(encoding))
            except UnicodeDecodeError:
                pass

        elif not isinstance(value, (basestring, numeric_types, Iterable)):
            # class instance, e.g. MultipartEncoder()
            value = repr(value)

        meta_data[request_or_response][key] = value
Exemple #4
0
def __stringify_response(response_data):
    """ stringfy HTTP response data

    Args:
        response_data (dict):

            {
                "status_code": 404,
                "headers": {
                    "Content-Type": "application/json",
                    "Content-Length": "30",
                    "Server": "Werkzeug/0.14.1 Python/3.7.0",
                    "Date": "Tue, 27 Nov 2018 06:19:27 GMT"
                },
                "encoding": "None",
                "content_type": "application/json",
                "ok": false,
                "url": "http://127.0.0.1:5000/api/users/9001",
                "reason": "NOT FOUND",
                "cookies": {},
                "json": {
                    "success": false,
                    "data": {}
                }
            }

    """
    for key, value in response_data.items():

        if isinstance(value, list):
            value = json.dumps(value, indent=2, ensure_ascii=False)

        elif isinstance(value, bytes):
            try:
                encoding = response_data.get("encoding")
                if not encoding or encoding == "None":
                    encoding = "utf-8"

                if key == "content" and "image" in response_data["content_type"]:
                    # display image
                    value = "data:{};base64,{}".format(
                        response_data["content_type"],
                        b64encode(value).decode(encoding)
                    )
                else:
                    value = escape(value.decode(encoding))
            except UnicodeDecodeError:
                pass

        elif not isinstance(value, (basestring, numeric_types, Iterable)):
            # class instance, e.g. MultipartEncoder()
            value = repr(value)

        elif isinstance(value, requests.cookies.RequestsCookieJar):
            value = value.get_dict()

        response_data[key] = value
Exemple #5
0
def dumps_json(value):
    """ dumps json value to indented string

    Args:
        value (dict): raw json data

    Returns:
        str: indented json dump string

    """
    return json.dumps(value, indent=2, ensure_ascii=False)
Exemple #6
0
def __stringify_request(request_data):
    """ stringfy HTTP request data

    Args:
        request_data (dict): HTTP request data in dict.

            {
                "url": "http://127.0.0.1:5000/api/get-token",
                "method": "POST",
                "headers": {
                    "User-Agent": "python-requests/2.20.0",
                    "Accept-Encoding": "gzip, deflate",
                    "Accept": "*/*",
                    "Connection": "keep-alive",
                    "user_agent": "iOS/10.3",
                    "device_sn": "TESTCASE_CREATE_XXX",
                    "os_platform": "ios",
                    "app_version": "2.8.6",
                    "Content-Type": "application/json",
                    "Content-Length": "52"
                },
                "json": {
                    "sign": "cb9d60acd09080ea66c8e63a1c78c6459ea00168"
                },
                "verify": false
            }

    """
    for key, value in request_data.items():

        if isinstance(value, list):
            value = json.dumps(value, indent=2, ensure_ascii=False)

        elif isinstance(value, bytes):
            try:
                encoding = "utf-8"
                value = escape(value.decode(encoding))
            except UnicodeDecodeError:
                pass

        elif not isinstance(value, (basestring, numeric_types, Iterable)):
            # class instance, e.g. MultipartEncoder()
            value = repr(value)

        elif isinstance(value, requests.cookies.RequestsCookieJar):
            value = value.get_dict()

        request_data[key] = value
Exemple #7
0
def make_json_serializable(raw_json):
    serializable_json = {}
    for key, value in raw_json.items():
        if isinstance(value, bytes):
            value = value.decode("utf-8")
        elif isinstance(value, CaseInsensitiveDict):
            value = dict(value)
        elif not isinstance(value, (basestring, numeric_types, Iterable)):
            # class instance, e.g. MultipartEncoder()
            value = repr(value)

        serializable_json[key] = value

    keyorder = [
        "url", "method", "request_headers", "request_body", "request_time",
        "status_code", "response_headers", "response_body", "content_size",
        "response_time(ms)", "elapsed(ms)"
    ]
    serializable_ordered_json = OrderedDict(
        sorted(serializable_json.items(), key=lambda x: keyorder.index(x[0])))

    return json.dumps(serializable_ordered_json, indent=2, ensure_ascii=False)