Modified Reddit API for Comment/Message objects to be based from dicts, for easier serialization

This commit is contained in:
2010-10-13 12:44:59 +01:00
parent f12d0983f6
commit 9fdc4454a9

View File

@@ -7,30 +7,30 @@ import unicodedata
class NotLoggedIn(Exception): class NotLoggedIn(Exception):
pass pass
class Comment: class Comment(dict):
""" Abstraction for comment data provided by JSON """ Abstraction for comment data provided by JSON
Comments can be identifed by Kind = 1 """ Comments can be identifed by Kind = 1 """
kind = 1
def __init__(self, data): def __init__(self, data):
self.id = data['id']
self.post = data['link_id'][3:]
self.body = data['body']
self.ups = data['likes']
self.downs = data['downs']
self.subreddit_id = data['subreddit_id']
self.subreddit = data['subreddit']
self.author = data['author']
self._rawdata = data dict.__init__(self)
self['kind'] = 1
self['id'] = data['id']
self['post'] = data['link_id'][3:]
self['body'] = data['body']
self['ups'] = data['likes']
self['downs'] = data['downs']
self['subreddit_id'] = data['subreddit_id']
self['subreddit'] = data['subreddit']
self['author'] = data['author']
self['permalink'] = u'http://reddit.com/comments/%s/c/%s' % (self['post'], self['id'])
@property def __getattr__(self, name):
def permalink(self): return dict.__getitem__(self, name)
return u'http://reddit.com/comments/%s/c/%s' % (self.post, self.id)
def __unicode__(self): def __unicode__(self):
return u'/r/%s - %s' % (self.subreddit, self.author) return u'/r/%s - %s' % (self['subreddit'], ['self.author'])
def __str__(self): def __str__(self):
return self.__unicode__() return self.__unicode__()
@@ -39,12 +39,13 @@ class Comment:
class Message(dict): class Message(dict):
""" Abstract for a Reddit Message """ """ Abstract for a Reddit Message """
def __init__(self, dict=None): def __init__(self, msg=None):
if dict: if msg:
self.dictitems = dict for k in msg.keys():
self[k] = msg[k]
def __getattr__(self, name): def __getattr__(self, name):
return self.dictitems[name] return dict.__getitem__(self, name)
def __unicode__(self): def __unicode__(self):
return u"%s: %s" % (self.author, self.subject) return u"%s: %s" % (self.author, self.subject)