b20032cf499f0da801bfaea71f96a6b5eb397ff5
[hermes] / package / src / org / maemo / hermes / engine / twitter / api.py
1 from org.maemo.hermes.engine.twitter.user import User
2 import urllib, urllib2
3 import base64
4 import simplejson
5 import urlparse
6
7 class TwitterApi():
8     """Twitter backend for Hermes. Inspired by
9           http://code.google.com/p/python-twitter/source/browse/twitter.py
10        
11        Copyright (c) Andrew Flegg <andrew@bleb.org> 2010.
12        Released under the Artistic Licence."""
13        
14        
15     # -----------------------------------------------------------------------
16     def __init__(self, make_api_request):
17         self._make_api_request = make_api_request
18
19
20     # -----------------------------------------------------------------------
21     def get_friends(self):
22         '''Return the full list of people being followed by 'username'.'''
23
24         url = 'https://twitter.com/statuses/friends.json?cursor=%d'
25         cursor = -1
26         users = []
27         while True:
28             json = self._make_api_request(url % (cursor))
29             data = simplejson.loads(json)
30             if 'error' in data:
31                 raise Exception(data['error'])
32
33             for x in data['users']:
34                 users.append(User.NewFromJsonDict(x))
35
36             cursor = data['next_cursor']
37             if cursor <= data['previous_cursor']:
38                 break
39
40         return users
41     
42     
43     # -----------------------------------------------------------------------
44     def get_user(self):
45         """Return the name of the authenticated user."""
46         
47         url = 'https://api.twitter.com/1/account/verify_credentials.json'
48         json = self._make_api_request(url)
49         user = simplejson.loads(json)
50 #        if 'name' in user and user['name']:
51 #            return user['name']
52         return user['screen_name']