diff options
author | Maximilian Hils <git@maximilianhils.com> | 2016-04-02 14:38:33 +0200 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2016-04-02 14:38:33 +0200 |
commit | 806aa0f41c7816b2859a6961939ed19499b73fe7 (patch) | |
tree | 069ce4a304fe3fab07def4a5daa3068c0140f2d8 /netlib/http/message.py | |
parent | 4ee8808b44c5a3377ac2c1dfc4ba5fb10d559ef5 (diff) | |
download | mitmproxy-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.py | 19 |
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 |