aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/flow.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-02-09 16:40:31 +1300
committerAldo Cortesi <aldo@nullcube.com>2012-02-09 16:40:31 +1300
commit2709441d5ba203da7c685b53692e66e273d20058 (patch)
treef88c842c951ea57b61ca7f3e11edd818b3d5f6b2 /libmproxy/flow.py
parent46bd7808625543bb42d1c1f20ff5599b837d1ca8 (diff)
downloadmitmproxy-2709441d5ba203da7c685b53692e66e273d20058.tar.gz
mitmproxy-2709441d5ba203da7c685b53692e66e273d20058.tar.bz2
mitmproxy-2709441d5ba203da7c685b53692e66e273d20058.zip
Add get_query and set_query methods to Request.
Diffstat (limited to 'libmproxy/flow.py')
-rw-r--r--libmproxy/flow.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/libmproxy/flow.py b/libmproxy/flow.py
index 818d8139..e929440e 100644
--- a/libmproxy/flow.py
+++ b/libmproxy/flow.py
@@ -2,7 +2,7 @@
This module provides more sophisticated flow tracking. These match requests
with their responses, and provide filtering and interception facilities.
"""
-import hashlib, Cookie, cookielib, copy, re
+import hashlib, Cookie, cookielib, copy, re, urlparse
import time
import tnetstring, filt, script, utils, encoding, proxy
from email.utils import parsedate_tz, formatdate, mktime_tz
@@ -312,6 +312,25 @@ class Request(HTTPMsg):
host = "%s:%s"%(self.host, self.port)
return host
+ def get_query(self):
+ """
+ Gets the request query string. Returns a list of (key, value)
+ tuples.
+ """
+ _, _, _, _, query, _ = urlparse.urlparse(self.get_url())
+ if not query:
+ return []
+ return utils.urldecode(query)
+
+ def set_query(self, q):
+ """
+ Takes a list of (key, value) tuples, and sets the request query
+ string.
+ """
+ scheme, netloc, path, params, _, fragment = urlparse.urlparse(self.get_url())
+ query = utils.urlencode(q)
+ self.set_url(urlparse.urlunparse([scheme, netloc, path, params, query, fragment]))
+
def get_url(self):
"""
Returns a URL string, constructed from the Request's URL compnents.