Fix some bugs with new model validation code.
authorJosh Roesslein <jroesslein@gmail.com>
Fri, 7 Aug 2009 20:25:13 +0000 (15:25 -0500)
committerJosh Roesslein <jroesslein@gmail.com>
Fri, 7 Aug 2009 20:25:13 +0000 (15:25 -0500)
tweepy/api.py
tweepy/binder.py
tweepy/models.py

index 341dcc2a934c6f9a62e88424956c300a8df5b4cf..e49eed512db7f0a0749fd8a41852446c5f08be20 100644 (file)
@@ -11,7 +11,8 @@ from error import TweepError
 class API(object):
 
   def __init__(self, auth_handler=None, username=None, host='twitter.com', cache=None,
-                secure=False, api_root='', classes={'user': User, 'status': Status,
+                secure=False, api_root='', validate=True,
+                classes={'user': User, 'status': Status,
                 'direct_message': DirectMessage, 'friendship': Friendship,
                 'saved_search': SavedSearch, 'search_result': SearchResult}):
     self.auth_handler = auth_handler
@@ -20,6 +21,7 @@ class API(object):
     self.api_root = api_root
     self.cache = cache
     self.secure = secure
+    self.validate = validate
     self.classes = classes
 
   """Get public timeline"""
index 77529728268e780639bea2af4d588d8553118dd5..850036aa277e337027e04d6fec2e061dacd12a7d 100644 (file)
@@ -79,13 +79,24 @@ def bind_api(path, parser, allowed_param=None, method='GET', require_auth=False,
 
     # Pass returned body into parser and return parser output
     out =  parser(resp.read(), api)
+    conn.close()
+
+    # validate result
+    if api.validate:
+      # list of results
+      if isinstance(out, list) and len(out) > 0:
+        if hasattr(out[0], 'validate'):
+          for result in out:
+            result.validate()
+      # single result
+      else:
+        if hasattr(out, 'validate'):
+          out.validate()
 
     # store result in cache
     if api.cache and method == 'GET':
       api.cache.store(url, out)
 
-    # close connection and return data
-    conn.close()
     return out
 
   return _call
index b1b28e3062cc35ea6b395b0b2f999e1848f19b8a..9dc8cf3c614bf178844d7f5d28913aaea25eadb4 100644 (file)
@@ -27,7 +27,7 @@ class Status(Model):
 
   @staticmethod
   def _validate(status):
-    Model.validate(status, [
+    Model._validate(status, [
       'created_at', 'id', 'text', 'source', 'truncated', 'in_reply_to_status_id',
       'in_reply_to_user_id', 'favorited', 'in_reply_to_screen_name'
     ])
@@ -43,7 +43,7 @@ class User(Model):
 
   @staticmethod
   def _validate(user):
-    Model.validate(user, [
+    Model._validate(user, [
       'id', 'name', 'screen_name', 'location', 'description', 'profile_image_url',
       'url', 'protected', 'followers_count', 'profile_background_color', 
       'profile_text_color', 'profile_sidebar_fill_color', 'profile_sidebar_border_color',