mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-23 08:11:00 +00:00
6032c4f235
This PR improves our handling of HTTP message body encodings: - The unaltered message body is now accessible as `.raw_content` - The "content-encoding"-decoded content (i.e. gzip removed) content is not `.content`, as this is what we want in 99% of the cases. - `.text` now provides the "content-encoding"-decoded and then "content-type charset"-decoded message body. - The decoded values for `.content` and `.text` are cached, so that repeated access and `x.text = x.text` is cheap. - The `decoded()` decorator is now deprecated, as we can now just use `.content`. Similarly `HTTPMessage.get_decoded_content()` is deprecated.
40 lines
918 B
Python
40 lines
918 B
Python
from netlib import encoding, tutils
|
|
|
|
|
|
def test_identity():
|
|
assert b"string" == encoding.decode(b"string", "identity")
|
|
assert b"string" == encoding.encode(b"string", "identity")
|
|
with tutils.raises(ValueError):
|
|
encoding.encode(b"string", "nonexistent encoding")
|
|
|
|
|
|
def test_gzip():
|
|
assert b"string" == encoding.decode(
|
|
encoding.encode(
|
|
b"string",
|
|
"gzip"
|
|
),
|
|
"gzip"
|
|
)
|
|
with tutils.raises(ValueError):
|
|
encoding.decode(b"bogus", "gzip")
|
|
|
|
|
|
def test_deflate():
|
|
assert b"string" == encoding.decode(
|
|
encoding.encode(
|
|
b"string",
|
|
"deflate"
|
|
),
|
|
"deflate"
|
|
)
|
|
assert b"string" == encoding.decode(
|
|
encoding.encode(
|
|
b"string",
|
|
"deflate"
|
|
)[2:-4],
|
|
"deflate"
|
|
)
|
|
with tutils.raises(ValueError):
|
|
encoding.decode(b"bogus", "deflate")
|