fix for issue 567, added reserved words, rebuilt client

This commit is contained in:
Tony Tam 2015-03-28 10:42:02 -07:00
parent 92621f2f2d
commit 492ab20c00
6 changed files with 142 additions and 42 deletions

View File

@ -15,12 +15,17 @@ Copyright 2015 Reverb Technologies, Inc.
limitations under the License.
"""
class Category:
class Category(object):
"""NOTE: This class is auto generated by the swagger code generator program.
Do not edit the class manually."""
def __init__(self):
"""
Attributes:
swaggerTypes (dict): The key is attribute name and the value is attribute type.
attributeMap (dict): The key is attribute name and the value is json key in definition.
"""
self.swaggerTypes = {
'id': 'long',
@ -30,6 +35,13 @@ class Category:
}
self.attributeMap = {
'id': 'id',
'name': 'name'
}

View File

@ -15,12 +15,17 @@ Copyright 2015 Reverb Technologies, Inc.
limitations under the License.
"""
class Order:
class Order(object):
"""NOTE: This class is auto generated by the swagger code generator program.
Do not edit the class manually."""
def __init__(self):
"""
Attributes:
swaggerTypes (dict): The key is attribute name and the value is attribute type.
attributeMap (dict): The key is attribute name and the value is json key in definition.
"""
self.swaggerTypes = {
'id': 'long',
@ -42,6 +47,21 @@ class Order:
}
self.attributeMap = {
'id': 'id',
'petId': 'petId',
'quantity': 'quantity',
'shipDate': 'shipDate',
'status': 'status',
'complete': 'complete'
}

View File

@ -15,12 +15,17 @@ Copyright 2015 Reverb Technologies, Inc.
limitations under the License.
"""
class Pet:
class Pet(object):
"""NOTE: This class is auto generated by the swagger code generator program.
Do not edit the class manually."""
def __init__(self):
"""
Attributes:
swaggerTypes (dict): The key is attribute name and the value is attribute type.
attributeMap (dict): The key is attribute name and the value is json key in definition.
"""
self.swaggerTypes = {
'id': 'long',
@ -42,6 +47,21 @@ class Pet:
}
self.attributeMap = {
'id': 'id',
'category': 'category',
'name': 'name',
'photoUrls': 'photoUrls',
'tags': 'tags',
'status': 'status'
}

View File

@ -15,12 +15,17 @@ Copyright 2015 Reverb Technologies, Inc.
limitations under the License.
"""
class Tag:
class Tag(object):
"""NOTE: This class is auto generated by the swagger code generator program.
Do not edit the class manually."""
def __init__(self):
"""
Attributes:
swaggerTypes (dict): The key is attribute name and the value is attribute type.
attributeMap (dict): The key is attribute name and the value is json key in definition.
"""
self.swaggerTypes = {
'id': 'long',
@ -30,6 +35,13 @@ class Tag:
}
self.attributeMap = {
'id': 'id',
'name': 'name'
}

View File

@ -15,12 +15,17 @@ Copyright 2015 Reverb Technologies, Inc.
limitations under the License.
"""
class User:
class User(object):
"""NOTE: This class is auto generated by the swagger code generator program.
Do not edit the class manually."""
def __init__(self):
"""
Attributes:
swaggerTypes (dict): The key is attribute name and the value is attribute type.
attributeMap (dict): The key is attribute name and the value is json key in definition.
"""
self.swaggerTypes = {
'id': 'long',
@ -48,6 +53,25 @@ class User:
}
self.attributeMap = {
'id': 'id',
'username': 'username',
'firstName': 'firstName',
'lastName': 'lastName',
'email': 'email',
'password': 'password',
'phone': 'phone',
'userStatus': 'userStatus'
}

View File

@ -19,7 +19,7 @@ import string
from models import *
class ApiClient:
class ApiClient(object):
"""Generic API client for Swagger client library builds
Attributes:
@ -41,13 +41,13 @@ class ApiClient:
headers = {}
if headerParams:
for param, value in headerParams.iteritems():
headers[param] = value
headers[param] = ApiClient.sanitizeForSerialization(value)
if self.headerName:
headers[self.headerName] = self.headerValue
headers[self.headerName] = ApiClient.sanitizeForSerialization(self.headerValue)
if self.cookie:
headers['Cookie'] = self.cookie
headers['Cookie'] = ApiClient.sanitizeForSerialization(self.cookie)
data = None
@ -55,8 +55,8 @@ class ApiClient:
# Need to remove None values, these should not be sent
sentQueryParams = {}
for param, value in queryParams.items():
if value != None:
sentQueryParams[param] = value
if value is not None:
sentQueryParams[param] = ApiClient.sanitizeForSerialization(value)
url = url + '?' + urllib.urlencode(sentQueryParams)
if method in ['GET']:
@ -65,7 +65,7 @@ class ApiClient:
elif method in ['POST', 'PUT', 'DELETE']:
if postData:
postData = self.sanitizeForSerialization(postData)
postData = ApiClient.sanitizeForSerialization(postData)
if 'Content-type' not in headers:
headers['Content-type'] = 'application/json'
data = json.dumps(postData)
@ -107,34 +107,38 @@ class ApiClient:
else:
return urllib.quote(str(obj))
def sanitizeForSerialization(self, obj):
"""Dump an object into JSON for POSTing."""
@staticmethod
def sanitizeForSerialization(obj):
"""
Sanitize an object for Request.
if type(obj) == type(None):
If obj is None, return None.
If obj is str, int, long, float, bool, return directly.
If obj is datetime.datetime, datetime.date convert to string in iso8601 format.
If obj is list, santize each element in the list.
If obj is dict, return the dict.
If obj is swagger model, return the properties dict.
"""
if isinstance(obj, type(None)):
return None
elif type(obj) in [str, int, long, float, bool]:
elif isinstance(obj, (str, int, long, float, bool, file)):
return obj
elif type(obj) == list:
return [self.sanitizeForSerialization(subObj) for subObj in obj]
elif type(obj) == datetime.datetime:
elif isinstance(obj, list):
return [ApiClient.sanitizeForSerialization(subObj) for subObj in obj]
elif isinstance(obj, (datetime.datetime, datetime.date)):
return obj.isoformat()
else:
if type(obj) == dict:
if isinstance(obj, dict):
objDict = obj
else:
objDict = obj.__dict__
return {key: self.sanitizeForSerialization(val)
for (key, val) in objDict.iteritems()
if key != 'swaggerTypes'}
if type(postData) == list:
# Could be a list of objects
if type(postData[0]) in safeToDump:
data = json.dumps(postData)
else:
data = json.dumps([datum.__dict__ for datum in postData])
elif type(postData) not in safeToDump:
data = json.dumps(postData.__dict__)
# Convert model obj to dict except attributes `swaggerTypes`, `attributeMap`
# and attributes which value is not None.
# Convert attribute name to json key in model definition for request.
objDict = {obj.attributeMap[key]: val
for key, val in obj.__dict__.iteritems()
if key != 'swaggerTypes' and key != 'attributeMap' and val is not None}
return {key: ApiClient.sanitizeForSerialization(val)
for (key, val) in objDict.iteritems()}
def buildMultipartFormData(self, postData, files):
def escape_quotes(s):
@ -194,16 +198,13 @@ class ApiClient:
if objClass in [int, long, float, dict, list, str, bool]:
return objClass(obj)
elif objClass == datetime:
# Server will always return a time stamp in UTC, but with
# trailing +0000 indicating no offset from UTC. So don't process
# last 5 characters.
return datetime.datetime.strptime(obj[:-5], "%Y-%m-%dT%H:%M:%S.%f")
return self.__parse_string_to_datetime(obj)
instance = objClass()
for attr, attrType in instance.swaggerTypes.iteritems():
if obj is not None and attr in obj and type(obj) in [list, dict]:
value = obj[attr]
if obj is not None and instance.attributeMap[attr] in obj and type(obj) in [list, dict]:
value = obj[instance.attributeMap[attr]]
if attrType in ['str', 'int', 'long', 'float', 'bool']:
attrType = eval(attrType)
try:
@ -214,7 +215,7 @@ class ApiClient:
value = value
setattr(instance, attr, value)
elif (attrType == 'datetime'):
setattr(instance, attr, datetime.datetime.strptime(value[:-5], "%Y-%m-%dT%H:%M:%S.%f"))
setattr(instance, attr, self.__parse_string_to_datetime(value))
elif 'list[' in attrType:
match = re.match('list\[(.*)\]', attrType)
subClass = match.group(1)
@ -226,10 +227,21 @@ class ApiClient:
subValues.append(self.deserialize(subValue, subClass))
setattr(instance, attr, subValues)
else:
setattr(instance, attr, self.deserialize(value, objClass))
setattr(instance, attr, self.deserialize(value, attrType))
return instance
def __parse_string_to_datetime(self, string):
"""
Parse datetime in string to datetime.
The string should be in iso8601 datetime format.
"""
try:
from dateutil.parser import parse
return parse(string)
except ImportError:
return string
class MethodRequest(urllib2.Request):
def __init__(self, *args, **kwargs):
@ -243,4 +255,4 @@ class MethodRequest(urllib2.Request):
return urllib2.Request.__init__(self, *args, **kwargs)
def get_method(self):
return getattr(self, 'method', urllib2.Request.get_method(self))
return getattr(self, 'method', urllib2.Request.get_method(self))