aboutsummaryrefslogtreecommitdiffstats
path: root/netlib/http/message.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-04-02 14:38:33 +0200
committerMaximilian Hils <git@maximilianhils.com>2016-04-02 14:38:33 +0200
commit806aa0f41c7816b2859a6961939ed19499b73fe7 (patch)
tree069ce4a304fe3fab07def4a5daa3068c0140f2d8 /netlib/http/message.py
parent4ee8808b44c5a3377ac2c1dfc4ba5fb10d559ef5 (diff)
downloadmitmproxy-806aa0f41c7816b2859a6961939ed19499b73fe7.tar.gz
mitmproxy-806aa0f41c7816b2859a6961939ed19499b73fe7.tar.bz2
mitmproxy-806aa0f41c7816b2859a6961939ed19499b73fe7.zip
improve .replace() and move it into netlib
Diffstat (limited to 'netlib/http/message.py')
-rw-r--r--netlib/http/message.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/netlib/http/message.py b/netlib/http/message.py
index b265ac4f..da9681a0 100644
--- a/netlib/http/message.py
+++ b/netlib/http/message.py
@@ -175,6 +175,25 @@ class Message(utils.Serializable):
self.headers["content-encoding"] = e
return True
+ def replace(self, pattern, repl, flags=0):
+ """
+ Replaces a regular expression pattern with repl in both the headers
+ and the body of the message. Encoded body will be decoded
+ before replacement, and re-encoded afterwards.
+
+ Returns:
+ The number of replacements made.
+ """
+ # TODO: Proper distinction between text and bytes.
+ replacements = 0
+ if self.content:
+ with decoded(self):
+ self.content, replacements = utils.safe_subn(
+ pattern, repl, self.content, flags=flags
+ )
+ replacements += self.headers.replace(pattern, repl, flags)
+ return replacements
+
# Legacy
@property