aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShadab Zafar <dufferzafar0@gmail.com>2016-02-05 23:25:25 +0530
committerShadab Zafar <dufferzafar0@gmail.com>2016-02-06 00:41:01 +0530
commit9efda4d138a02ec5bafef8894102f3d522cb5fe6 (patch)
tree567376ecb687ab51d533d673135e06434ac0e533
parentae4a1dd6dec9d95e450837db8937e3fb7604c121 (diff)
downloadmitmproxy-9efda4d138a02ec5bafef8894102f3d522cb5fe6.tar.gz
mitmproxy-9efda4d138a02ec5bafef8894102f3d522cb5fe6.tar.bz2
mitmproxy-9efda4d138a02ec5bafef8894102f3d522cb5fe6.zip
Refactor copy_as_python_code
Make it easier to support other HTTP request types
-rw-r--r--libmproxy/console/common.py38
1 files changed, 25 insertions, 13 deletions
diff --git a/libmproxy/console/common.py b/libmproxy/console/common.py
index 276e45c2..93c4df72 100644
--- a/libmproxy/console/common.py
+++ b/libmproxy/console/common.py
@@ -309,20 +309,32 @@ def copy_as_python_code(flow):
signals.status_message.send(message="Currently, only GET methods are supported")
return
- data = ("import requests\n"
- "headers = {%s}\n"
- "url = '%s'\n"
- "resp = requests.get(url, headers=headers)")
-
- headers = "\n"
- for k, v in flow.request.headers.fields:
- headers += " '%s': '%s',\n" % (k, v)
-
- full_url = flow.request.scheme + "://" + flow.request.host + flow.request.path
-
- data = data % (headers, full_url)
+ code = """import requests
+
+url = '{url}'
+{headers}
+response = requests.request(
+ method='{method}',
+ url=url,{args}
+)
+
+print(response.text)"""
+
+ args = ""
+ headers = ""
+ if flow.request.headers:
+ lines = [" '%s': '%s',\n" % (k, v) for k, v in flow.request.headers.fields]
+ headers += "\nheaders = {\n%s}\n" % "".join(lines)
+ args += "\n headers=headers,"
+
+ code = code.format(
+ url=flow.request.pretty_url,
+ headers=headers,
+ method=flow.request.method,
+ args=args,
+ )
- copy_to_clipboard_or_prompt(data)
+ copy_to_clipboard_or_prompt(code)
def copy_as_raw_request(flow):