updates
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
def setattr_mixed(dest, key, value):
|
||||
if isinstance(dest, list):
|
||||
dest.append(value)
|
||||
else:
|
||||
setattr(dest, key, value)
|
||||
|
||||
|
||||
def construct_object(name, data, cls=object):
|
||||
if isinstance(data, dict):
|
||||
iterator = iter(data)
|
||||
dest = Result(data)
|
||||
elif isinstance(data, list):
|
||||
iterator = range(len(data))
|
||||
dest = []
|
||||
else:
|
||||
return data
|
||||
|
||||
for k in iterator:
|
||||
v = data[k]
|
||||
|
||||
k = str(k).replace("-", "_").lower()
|
||||
if isinstance(v, dict):
|
||||
setattr_mixed(dest, k, construct_object(k, v))
|
||||
elif isinstance(v, list):
|
||||
l = []
|
||||
for i in range(len(v)):
|
||||
setattr_mixed(l, i, construct_object(k, v[i]))
|
||||
|
||||
setattr_mixed(dest, k, l)
|
||||
else:
|
||||
setattr_mixed(dest, k, v)
|
||||
|
||||
return dest
|
||||
|
||||
|
||||
class Result(object):
|
||||
|
||||
def __init__(self, data):
|
||||
self._dict = data;
|
||||
|
||||
def dict(self):
|
||||
return self._dict
|
||||
|
||||
def __contains__(self, key):
|
||||
return key in self._dict
|
||||
|
||||
def __getitem__(self, key):
|
||||
return self._dict[key]
|
||||
|
||||
|
||||
class HttpResponse(object):
|
||||
|
||||
def __init__(self, data, status_code, headers=None):
|
||||
if headers is None:
|
||||
headers = {}
|
||||
|
||||
self.status_code = status_code
|
||||
self.headers = headers
|
||||
if data and len(data) > 0:
|
||||
if isinstance(data, str):
|
||||
self.result = data
|
||||
elif isinstance(data, dict) or isinstance(data, list):
|
||||
self.result = construct_object('Result', data) # todo: pass through response type
|
||||
else:
|
||||
self.result = None
|
||||
|
||||
Reference in New Issue
Block a user