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
self.api_root = api_root
self.cache = cache
self.secure = secure
+ self.validate = validate
self.classes = classes
"""Get public timeline"""
# 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
@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'
])
@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',