photo-python/trovebox/api/api_base.py
2014-02-02 20:38:11 +00:00

47 lines
1.3 KiB
Python

"""
api_base.py: Base class for all API classes
"""
try:
from urllib.parse import quote # Python3
except ImportError:
from urllib import quote # Python2
class ApiBase(object):
""" Base class for all API objects """
def __init__(self, client):
self._client = client
def _build_option_string(self, options):
"""
:param options: dictionary containing the options
:returns: option_string formatted for an API endpoint
"""
option_string = ""
if options is not None:
for key in options:
option_string += "/%s-%s" % (key, options[key])
return self._quote_url(option_string)
@staticmethod
def _extract_id(obj):
""" Return obj.id, or obj if the object doesn't have an ID """
try:
return obj.id
except AttributeError:
return obj
@staticmethod
def _quote_url(string):
""" Make a string suitable for insertion into a URL """
return quote(string.encode('utf-8'))
@staticmethod
def _result_to_list(result):
""" Handle the case where the result contains no items """
if not result:
return []
if "totalRows" in result[0] and result[0]["totalRows"] == 0:
return []
else:
return result