X-Git-Url: https://jfr.im/git/z_archive/twitter.git/blobdiff_plain/aef72b31d8e84c39435b720f6124db71109e3f9e..452d1d1228570be1ae6fcd4b9a9a4a3bf5c4f445:/twitter/api.py diff --git a/twitter/api.py b/twitter/api.py index ad0df9a..b7ba198 100644 --- a/twitter/api.py +++ b/twitter/api.py @@ -70,12 +70,18 @@ class TwitterResponse(object): # Multiple inheritance makes my inner Java nerd cry. Why can't I just # add arbitrary attributes to list or str objects?! Guido, we need to # talk. -class TwitterJsonResponse(TwitterResponse, list): +class TwitterJsonListResponse(TwitterResponse, list): __doc__ = """Twitter JSON Response """ + TwitterResponse.__doc__ def __init__(self, lst, headers): TwitterResponse.__init__(self, headers) list.__init__(self, lst) +class TwitterJsonDictResponse(TwitterResponse, dict): + __doc__ = """Twitter JSON Response + """ + TwitterResponse.__doc__ + def __init__(self, d, headers): + TwitterResponse.__init__(self, headers) + dict.__init__(self, d) class TwitterXmlResponse(TwitterResponse, str): __doc__ = """Twitter XML Response @@ -148,8 +154,11 @@ class TwitterCall(object): try: handle = urllib2.urlopen(req) if "json" == self.format: - return TwitterJsonResponse(json.loads(handle.read()), - handle.headers) + res = json.loads(handle.read()) + response_cls = ( + TwitterJsonListResponse if type(res) is list + else TwitterJsonDictResponse) + return response_cls(res, handle.headers) else: r = TwitterXmlResponse(handle.read()) r.headers = handle.headers @@ -279,5 +288,6 @@ class Twitter(TwitterCall): secure=secure, uriparts=uriparts) -__all__ = ["Twitter", "TwitterError", "TwitterHTTPError", "TwitterJsonResponse", +__all__ = ["Twitter", "TwitterError", "TwitterHTTPError", + "TwitterJsonListResponse", "TwitterJsonDictResponse", "TwitterXmlResponse"]