minor improvement to python client accept and content-type header

This commit is contained in:
geekerzp
2015-05-22 10:45:38 +08:00
parent 2b7bbd9513
commit 52807c0724
6 changed files with 144 additions and 47 deletions
@@ -29,6 +29,8 @@ from six import iteritems
from ..util import remove_none
from ..swagger import ApiClient
{{#operations}}
class {{classname}}(object):
@@ -68,11 +70,13 @@ class {{classname}}(object):
files = remove_none(dict({{#formParams}}{{#isFile}}{{baseName}}=params.get('{{paramName}}'){{#hasMore}}, {{/hasMore}}{{/isFile}}{{/formParams}}))
body_params = {{#bodyParam}}params.get('{{paramName}}'){{/bodyParam}}{{^bodyParam}}None{{/bodyParam}}
# HTTP header `Accept`
accepts = [{{#produces}}'{{mediaType}}'{{#hasMore}}, {{/hasMore}}{{/produces}}]
header_params['Accept'] = ', '.join(accepts)
header_params['Accept'] = ApiClient.select_header_accept(accepts)
# HTTP header `Content-Type`
content_types = [{{#consumes}}'{{mediaType}}'{{#hasMore}}, {{/hasMore}}{{/consumes}}]
header_params['Content-Type'] = content_types[0] if len(content_types) > 0 else 'application/json'
header_params['Content-Type'] = ApiClient.select_header_content_type(content_types)
response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params,
body=body_params, post_params=form_params, files=files,
@@ -253,7 +253,28 @@ class ApiClient(object):
return params
@staticmethod
def select_header_accept(accepts):
"""
Return `Accept` based on an array of accepts provided
"""
if not accepts:
return 'application/json'
if 'application/json'.lower() in accepts:
return 'application/json'
else:
return ', '.join(accepts)
@staticmethod
def select_header_content_type(content_types):
"""
Return `Content-Type` baseed on an array of content_types provided
"""
if not content_types:
return 'application/json'
if 'application/json'.lower() in content_types:
return 'application/json'
else:
return content_types[0]