Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ class {{classname}}(object):
all_params = [{{#allParams}}'{{paramName}}'{{#hasMore}}, {{/hasMore}}{{/allParams}}]
all_params.append('callback')
all_params.append('_return_http_data_only')
all_params.append('_preload_content')

params = locals()
for key, val in iteritems(params['kwargs']):
Expand Down Expand Up @@ -211,6 +212,7 @@ class {{classname}}(object):
auth_settings=auth_settings,
callback=params.get('callback'),
_return_http_data_only=params.get('_return_http_data_only'),
_preload_content=params.get('_preload_content', True),
collection_formats=collection_formats)
{{/operation}}
{{/operations}}
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ class ApiClient(object):
path_params=None, query_params=None, header_params=None,
body=None, post_params=None, files=None,
response_type=None, auth_settings=None, callback=None,
_return_http_data_only=None, collection_formats=None):
_return_http_data_only=None, collection_formats=None, _preload_content=True):

# header parameters
header_params = header_params or {}
Expand Down Expand Up @@ -144,22 +144,24 @@ class ApiClient(object):
response_data = self.request(method, url,
query_params=query_params,
headers=header_params,
post_params=post_params, body=body)
post_params=post_params, body=body, _preload_content=_preload_content)

self.last_response = response_data

# deserialize response data
if response_type:
deserialized_data = self.deserialize(response_data, response_type)
else:
deserialized_data = None
return_data = response_data
if _preload_content:
# deserialize response data
if response_type:
return_data = self.deserialize(response_data, response_type)
else:
return_data = None

if callback:
callback(deserialized_data) if _return_http_data_only else callback((deserialized_data, response_data.status, response_data.getheaders()))
callback(return_data) if _return_http_data_only else callback((return_data, response_data.status, response_data.getheaders()))
elif _return_http_data_only:
return (deserialized_data)
return (return_data)
else:
return (deserialized_data, response_data.status, response_data.getheaders())
return (return_data, response_data.status, response_data.getheaders())

def sanitize_for_serialization(self, obj):
"""
Expand Down Expand Up @@ -277,7 +279,7 @@ class ApiClient(object):
path_params=None, query_params=None, header_params=None,
body=None, post_params=None, files=None,
response_type=None, auth_settings=None, callback=None,
_return_http_data_only=None, collection_formats=None):
_return_http_data_only=None, collection_formats=None, _preload_content=True):
"""
Makes the HTTP request (synchronous) and return the deserialized data.
To make an async request, define a function for callback.
Expand Down Expand Up @@ -307,13 +309,15 @@ class ApiClient(object):
The method will return the request thread.
If parameter callback is None,
then the method will return the response directly.
:param _preload_content: if False, the urllib3.HTTPResponse object will be returned without
reading/decoding response data. Default is True.
"""
if callback is None:
return self.__call_api(resource_path, method,
path_params, query_params, header_params,
body, post_params, files,
response_type, auth_settings, callback,
_return_http_data_only, collection_formats)
_return_http_data_only, collection_formats, _preload_content)
else:
thread = threading.Thread(target=self.__call_api,
args=(resource_path, method,
Expand All @@ -322,51 +326,58 @@ class ApiClient(object):
post_params, files,
response_type, auth_settings,
callback, _return_http_data_only,
collection_formats))
collection_formats, _preload_content))
thread.start()
return thread

def request(self, method, url, query_params=None, headers=None,
post_params=None, body=None):
post_params=None, body=None, _preload_content=True):
"""
Makes the HTTP request using RESTClient.
"""
if method == "GET":
return self.rest_client.GET(url,
query_params=query_params,
_preload_content=_preload_content,
headers=headers)
elif method == "HEAD":
return self.rest_client.HEAD(url,
query_params=query_params,
_preload_content=_preload_content,
headers=headers)
elif method == "OPTIONS":
return self.rest_client.OPTIONS(url,
query_params=query_params,
headers=headers,
post_params=post_params,
_preload_content=_preload_content,
body=body)
elif method == "POST":
return self.rest_client.POST(url,
query_params=query_params,
headers=headers,
post_params=post_params,
_preload_content=_preload_content,
body=body)
elif method == "PUT":
return self.rest_client.PUT(url,
query_params=query_params,
headers=headers,
post_params=post_params,
_preload_content=_preload_content,
body=body)
elif method == "PATCH":
return self.rest_client.PATCH(url,
query_params=query_params,
headers=headers,
post_params=post_params,
_preload_content=_preload_content,
body=body)
elif method == "DELETE":
return self.rest_client.DELETE(url,
query_params=query_params,
headers=headers,
_preload_content=_preload_content,
body=body)
else:
raise ValueError(
Expand Down
45 changes: 30 additions & 15 deletions modules/swagger-codegen/src/main/resources/python/rest.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class RESTClientObject(object):
)

def request(self, method, url, query_params=None, headers=None,
body=None, post_params=None):
body=None, post_params=None, _preload_content=True):
"""
:param method: http request method
:param url: http request url
Expand All @@ -95,6 +95,8 @@ class RESTClientObject(object):
:param post_params: request post parameters,
`application/x-www-form-urlencoded`
and `multipart/form-data`
:param _preload_content: if False, the urllib3.HTTPResponse object will be returned without
reading/decoding response data. Default is True.
"""
method = method.upper()
assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT', 'PATCH', 'OPTIONS']
Expand All @@ -121,11 +123,13 @@ class RESTClientObject(object):
request_body = json.dumps(body)
r = self.pool_manager.request(method, url,
body=request_body,
preload_content=_preload_content,
headers=headers)
elif headers['Content-Type'] == 'application/x-www-form-urlencoded':
r = self.pool_manager.request(method, url,
fields=post_params,
encode_multipart=False,
preload_content=_preload_content,
headers=headers)
elif headers['Content-Type'] == 'multipart/form-data':
# must del headers['Content-Type'], or the correct Content-Type
Expand All @@ -134,6 +138,7 @@ class RESTClientObject(object):
r = self.pool_manager.request(method, url,
fields=post_params,
encode_multipart=True,
preload_content=_preload_content,
headers=headers)
# Pass a `string` parameter directly in the body to support
# other content types than Json when `body` argument is provided
Expand All @@ -142,6 +147,7 @@ class RESTClientObject(object):
request_body = body
r = self.pool_manager.request(method, url,
body=request_body,
preload_content=_preload_content,
headers=headers)
else:
# Cannot generate the request from given parameters
Expand All @@ -152,68 +158,77 @@ class RESTClientObject(object):
else:
r = self.pool_manager.request(method, url,
fields=query_params,
preload_content=_preload_content,
headers=headers)
except urllib3.exceptions.SSLError as e:
msg = "{0}\n{1}".format(type(e).__name__, str(e))
raise ApiException(status=0, reason=msg)

r = RESTResponse(r)
if _preload_content:
r = RESTResponse(r)

# In the python 3, the response.data is bytes.
# we need to decode it to string.
if PY3:
r.data = r.data.decode('utf8')
# In the python 3, the response.data is bytes.
# we need to decode it to string.
if PY3:
r.data = r.data.decode('utf8')

# log response body
logger.debug("response body: %s", r.data)
# log response body
logger.debug("response body: %s", r.data)

if r.status not in range(200, 206):
raise ApiException(http_resp=r)

return r

def GET(self, url, headers=None, query_params=None):
def GET(self, url, headers=None, query_params=None, _preload_content=True):
return self.request("GET", url,
headers=headers,
_preload_content=_preload_content,
query_params=query_params)

def HEAD(self, url, headers=None, query_params=None):
def HEAD(self, url, headers=None, query_params=None, _preload_content=True):
return self.request("HEAD", url,
headers=headers,
_preload_content=_preload_content,
query_params=query_params)

def OPTIONS(self, url, headers=None, query_params=None, post_params=None, body=None):
def OPTIONS(self, url, headers=None, query_params=None, post_params=None, body=None, _preload_content=True):
return self.request("OPTIONS", url,
headers=headers,
query_params=query_params,
post_params=post_params,
_preload_content=_preload_content,
body=body)

def DELETE(self, url, headers=None, query_params=None, body=None):
def DELETE(self, url, headers=None, query_params=None, body=None, _preload_content=True):
return self.request("DELETE", url,
headers=headers,
query_params=query_params,
_preload_content=_preload_content,
body=body)

def POST(self, url, headers=None, query_params=None, post_params=None, body=None):
def POST(self, url, headers=None, query_params=None, post_params=None, body=None, _preload_content=True):
return self.request("POST", url,
headers=headers,
query_params=query_params,
post_params=post_params,
_preload_content=_preload_content,
body=body)

def PUT(self, url, headers=None, query_params=None, post_params=None, body=None):
def PUT(self, url, headers=None, query_params=None, post_params=None, body=None, _preload_content=True):
return self.request("PUT", url,
headers=headers,
query_params=query_params,
post_params=post_params,
_preload_content=_preload_content,
body=body)

def PATCH(self, url, headers=None, query_params=None, post_params=None, body=None):
def PATCH(self, url, headers=None, query_params=None, post_params=None, body=None, _preload_content=True):
return self.request("PATCH", url,
headers=headers,
query_params=query_params,
post_params=post_params,
_preload_content=_preload_content,
body=body)


Expand Down
4 changes: 2 additions & 2 deletions samples/client/petstore/python/docs/FakeApi.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,8 +186,8 @@ No authorization required

### HTTP request headers

- **Content-Type**: application/json
- **Accept**: application/json
- **Content-Type**: */*
- **Accept**: */*

[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)

Loading