From 152e395fa49fc534e6897cf2411b7ce27e1d379f Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Wed, 13 Jan 2016 19:21:13 +0530 Subject: [PATCH] Copy as raw request Issue #807 I am not entirely sure what needs to be returned in this case. --- libmproxy/console/common.py | 12 ++++++++++++ libmproxy/console/flowlist.py | 1 + libmproxy/console/flowview.py | 1 + 3 files changed, 14 insertions(+) diff --git a/libmproxy/console/common.py b/libmproxy/console/common.py index 2ea774492..db40201f5 100644 --- a/libmproxy/console/common.py +++ b/libmproxy/console/common.py @@ -282,6 +282,8 @@ def export_prompt(k, flow): copy_as_curl_command(flow) elif k == "p": copy_as_python_code(flow) + elif k == "r": + copy_as_raw_request(flow) def copy_as_curl_command(flow): @@ -331,6 +333,16 @@ def copy_as_python_code(flow): copy_to_clipboard_or_prompt(data) +def copy_as_raw_request(flow): + if flow.request.content is None or flow.request.content == CONTENT_MISSING: + signals.status_message.send(message="Request content is missing") + return + + data = netlib.http.http1.assemble_request(flow.request) + + copy_to_clipboard_or_prompt(data) + + def copy_to_clipboard_or_prompt(data): # pyperclip calls encode('utf-8') on data to be copied without checking. # if data are already encoded that way UnicodeDecodeError is thrown. diff --git a/libmproxy/console/flowlist.py b/libmproxy/console/flowlist.py index b52c0fea8..2c18d1973 100644 --- a/libmproxy/console/flowlist.py +++ b/libmproxy/console/flowlist.py @@ -262,6 +262,7 @@ class ConnectionItem(urwid.WidgetWrap): keys = ( ("as curl command", "c"), ("as python code", "p"), + ("as raw request", "r"), ), callback = common.export_prompt, args = (self.flow,) diff --git a/libmproxy/console/flowview.py b/libmproxy/console/flowview.py index 3a745262f..7962c69cb 100644 --- a/libmproxy/console/flowview.py +++ b/libmproxy/console/flowview.py @@ -582,6 +582,7 @@ class FlowView(tabs.Tabs): keys = ( ("as curl command", "c"), ("as python code", "p"), + ("as raw request", "r"), ), callback = common.export_prompt, args = (self.flow,)