Added statuses/retweets method. Implemented retweets parser. Added retweet model.
authorJosh Roesslein <jroesslein@gmail.com>
Mon, 21 Sep 2009 00:29:25 +0000 (19:29 -0500)
committerJosh Roesslein <jroesslein@gmail.com>
Mon, 21 Sep 2009 00:29:25 +0000 (19:29 -0500)
CHANGES
ROADMAP
tweepy/api.py
tweepy/models.py
tweepy/parsers.py

diff --git a/CHANGES b/CHANGES
index 8136b7bf0a4b530a97b81998b9d4481c30a3da77..d2a273a3f34cedeaf7fc846d76364f31ed5940eb 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -5,8 +5,10 @@ during upgrade will be listed here.
 =======================
 + Fixes
     + Google App Engine fixes (thanks Thomas Bohmbach, Jr)
-+ Added Retweet API methods
-+ Added Retweet Streaming method
++ API
+    + Added Retweet API methods
+    + Added Retweet Streaming method
+    + New model: Retweet
 + OAuthHandler
     + Added set_request_token() method
     + Added support for "sign in with twitter".
diff --git a/ROADMAP b/ROADMAP
index 6d52d14836a6da5f5d75199aad4ebf25e9ecaaad..c643561cb3fd1a90504cb906d14a03273172aae4 100644 (file)
--- a/ROADMAP
+++ b/ROADMAP
@@ -4,6 +4,6 @@ The plan of attack for the next version of Tweepy.
 ============
 + implement win32 file locking for FileCache
 + add retweet API methods [DONE]
-    + add statuses/retweets method
+    + add statuses/retweets method [DONE]
 + add retweet streaming method [DONE]
 
index ecb9a255afbdec591f0b5b0a43bab8cd1730ab50..ee856946d975cc3a947a4a651f64c08264b26d29 100644 (file)
@@ -133,6 +133,15 @@ class API(object):
         require_auth = True
     )
 
+    """Get the retweets of the specified tweet ID"""
+    def retweets(self, id, *args, **kargs):
+        return bind_api(
+            path = '/statuses/retweets/%s.json' % id,
+            parser = parse_retweets,
+            allowed_param = ['count'],
+            require_auth = True
+        )(self, *args, **kargs)
+
     """Show user"""
     get_user = bind_api(
         path = '/users/show.json',
index 6e75a42a4ae3c9976f471b89194c2bb88292cba1..9d50cd3a78134e069d24e26863d47324bf76c923 100644 (file)
@@ -109,6 +109,10 @@ class SearchResult(Model):
 
     pass
 
+class Retweet(Model):
+
+    pass
+
 # link up default model implementations.
 models = {
     'status': Status,
@@ -116,6 +120,7 @@ models = {
     'direct_message': DirectMessage,
     'friendship': Friendship,
     'saved_search': SavedSearch,
-    'search_result': SearchResult
+    'search_result': SearchResult,
+    'retweet': Retweet,
 }
 
index 00a7bf63f51533d2f0cf0e9ba964589166ae56ca..9d15a65b3b13ba16e4cecd9aab0a689a5c8b5632 100644 (file)
@@ -212,3 +212,20 @@ def parse_search_results(data, api):
         result_objects.append(_parse_search_result(obj, api))
     return result_objects
 
+def _parse_retweet(obj, api):
+
+    retweet = models['retweet']()
+    for k,v in obj.items():
+        if k == 'retweeting_user':
+            setattr(retweet, k, _parse_user(v, api))
+        else:
+            setattr(retweet, k, v)
+    return retweet
+
+def parse_retweets(data, api):
+
+    retweets = []
+    for obj in json.loads(data):
+        retweets.append(_parse_retweet(obj, api))
+    return retweets
+