diff options
author | Maximilian Hils <git@maximilianhils.com> | 2016-05-25 19:16:02 -0700 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2016-05-25 19:16:02 -0700 |
commit | 7a8da48a306dfc8e43239d7f2a141c465e40ab77 (patch) | |
tree | f3f6c73f5aecb2686fb228671ae1766ac1a3fa33 | |
parent | f7e77d543bcca84f75e09440841aacb582881da2 (diff) | |
download | mitmproxy-7a8da48a306dfc8e43239d7f2a141c465e40ab77.tar.gz mitmproxy-7a8da48a306dfc8e43239d7f2a141c465e40ab77.tar.bz2 mitmproxy-7a8da48a306dfc8e43239d7f2a141c465e40ab77.zip |
escaped_str_to_bytes: support unicode on python 2
-rw-r--r-- | netlib/utils.py | 6 | ||||
-rw-r--r-- | test/netlib/test_utils.py | 9 |
2 files changed, 11 insertions, 4 deletions
diff --git a/netlib/utils.py b/netlib/utils.py index 7499f71f..fe11cb5b 100644 --- a/netlib/utils.py +++ b/netlib/utils.py @@ -439,10 +439,14 @@ def escaped_str_to_bytes(data): """ Take an escaped string and return the unescaped bytes equivalent. """ - if not isinstance(data, str): + if not isinstance(data, six.string_types): + if six.PY2: + raise ValueError("data must be str or unicode") raise ValueError("data must be str") if six.PY2: + if isinstance(data, unicode): + data = data.encode("utf8") return data.decode("string-escape") # This one is difficult - we use an undocumented Python API here diff --git a/test/netlib/test_utils.py b/test/netlib/test_utils.py index 1d8f7b0f..671ae66c 100644 --- a/test/netlib/test_utils.py +++ b/test/netlib/test_utils.py @@ -182,6 +182,9 @@ def test_bytes_to_escaped_str(): def test_escaped_str_to_bytes(): assert utils.escaped_str_to_bytes("foo") == b"foo" - assert utils.escaped_str_to_bytes(r"\x08") == b"\b" - assert utils.escaped_str_to_bytes(r"&!?=\\)") == br"&!?=\)" - assert utils.escaped_str_to_bytes(r"ü") == b'\xc3\xbc' + assert utils.escaped_str_to_bytes("\x08") == b"\b" + assert utils.escaped_str_to_bytes("&!?=\\\\)") == br"&!?=\)" + assert utils.escaped_str_to_bytes("ü") == b'\xc3\xbc' + assert utils.escaped_str_to_bytes(u"\\x08") == b"\b" + assert utils.escaped_str_to_bytes(u"&!?=\\\\)") == br"&!?=\)" + assert utils.escaped_str_to_bytes(u"ü") == b'\xc3\xbc'
\ No newline at end of file |