From 256c86f8f7deb5375c38b6cc55c3d54d0366d283 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Tue, 23 Aug 2011 23:52:43 -0400 Subject: [PATCH] moving curl into utils #139 --- requests/models.py | 35 ----------------------------------- requests/utils.py | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/requests/models.py b/requests/models.py index 0d90ea9..5ff9eb4 100644 --- a/requests/models.py +++ b/requests/models.py @@ -383,41 +383,6 @@ class Request(object): return self.sent - @property - def curl(self): - """Creates a curl command from the request""" - - #TODO - Auth with User names and accounts - #TODO - Files - #TODO - OAuth - #TODO - Cookies? - - #: -L/--location - if there is a redirect, redo request on the new place - curl_cmd = 'curl -L ' - - #: -H/--header - Extra header to use when getting a web page - header = '' - if self.headers: - header = header.join(['-H "' + key + ':' + value + '" ' for key, value in self.headers.iteritems()]) - - if self.method.upper() == 'HEAD': - #: -I/--head - fetch headers only - method_opt = '-I ' - else: - #: -X/--request - specify request method - method_opt = '-X %s ' % self.method.upper() - - data = '' - if self.method in ('PUT', 'POST', 'PATCH'): - #: -d/--data - send specified data in post request. - if isinstance(self.data, (list, tuple)): - data = data.join(['-d ' + key + '=' + value + ' ' for key, value in self.data]) - elif self._enc_data is not None: - data = '-d ' + self._enc_data + ' ' - - #: Params handled in _build_url - return curl_cmd + method_opt + data + header + '"' + self._build_url() + '"' - class Response(object): """The core :class:`Response ` object. All diff --git a/requests/utils.py b/requests/utils.py index 2b55a16..51ec4bf 100644 --- a/requests/utils.py +++ b/requests/utils.py @@ -165,4 +165,39 @@ def decode_gzip(content): :param content: bytestring to gzip-decode. """ - return zlib.decompress(content, 16+zlib.MAX_WBITS) \ No newline at end of file + return zlib.decompress(content, 16+zlib.MAX_WBITS) + + +def curl_from_request(request): + """Creates a curl command from the request.""" + + #TODO - Auth with User names and accounts + #TODO - Files + #TODO - OAuth + #TODO - Cookies? + + #: -L/--location - if there is a redirect, redo request on the new place + curl_cmd = 'curl -L ' + + #: -H/--header - Extra header to use when getting a web page + header = '' + if request.headers: + header = header.join(['-H "' + key + ':' + value + '" ' for key, value in request.headers.iteritems()]) + + if request.method.upper() == 'HEAD': + #: -I/--head - fetch headers only + method_opt = '-I ' + else: + #: -X/--request - specify request method + method_opt = '-X %s ' % request.method.upper() + + data = '' + if request.method in ('PUT', 'POST', 'PATCH'): + #: -d/--data - send specified data in post request. + if isinstance(request.data, (list, tuple)): + data = data.join(['-d ' + key + '=' + value + ' ' for key, value in request.data]) + elif request._enc_data is not None: + data = '-d ' + request._enc_data + ' ' + + #: Params handled in _build_url + return curl_cmd + method_opt + data + header + '"' + request._build_url() + '"' \ No newline at end of file -- 2.34.1