Skip to content

Commit fcc116d

Browse files
committed
Added friend and findfriends methods. Added mechanism for an API method like friend/requests to be called by a python function named friend_requests.
1 parent fb93e0b commit fcc116d

File tree

2 files changed

+54
-7
lines changed

2 files changed

+54
-7
lines changed

foursquare.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,35 @@ def def_method(name, auth_required=False, server=API_SERVER,
216216
# Friend methods
217217
# --------------------
218218

219-
# TBD
219+
def_method('friend_requests',
220+
auth_required=True)
221+
222+
def_method('friend_approve',
223+
auth_required=True,
224+
http_method='POST',
225+
required=['uid'])
226+
227+
def_method('friend_deny',
228+
auth_required=True,
229+
http_method='POST',
230+
required=['uid'])
231+
232+
def_method('friend_sendrequest',
233+
auth_required=True,
234+
http_method='POST',
235+
required=['uid'])
236+
237+
def_method('findfriends_byname',
238+
auth_required=True,
239+
required=['q'])
240+
241+
def_method('findfriends_byphone',
242+
auth_required=True,
243+
required=['q'])
244+
245+
def_method('findfriends_bytwitter',
246+
auth_required=True,
247+
required=['q'])
220248

221249

222250
# --------------------
@@ -411,7 +439,7 @@ def call_method(self, method, *args, **kw):
411439
# Build the request.
412440
cred_url, cred_args, cred_headers = self.credentials.build_request(
413441
meta['http_method'],
414-
meta['url_template'].substitute(method=method),
442+
meta['url_template'].substitute(method=method.replace('_', '/')),
415443
kw,
416444
token=token)
417445

tests/test_foursquare.py

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
import foursquare
55

66

7-
MY_COORDS=[34.09075, -118.27516]
7+
TEST_OAUTH = True
8+
9+
MY_COORDS = [34.09075, -118.27516]
10+
811

912
class TestFoursquare(unittest.TestCase):
1013
def test_unauthenticated(self):
@@ -14,7 +17,6 @@ def test_unauthenticated(self):
1417
self.assertEqual(test_result['response'], 'ok')
1518

1619
cities = fs.cities()
17-
print cities
1820
self.failUnless('cities' in cities)
1921
self.failUnless(len(cities['cities']) > 0)
2022
self.failUnless(find_if(cities['cities'], lambda o: o['id'] == 34), "Where did LA go?")
@@ -29,8 +31,6 @@ def test_unauthenticated(self):
2931

3032
def test_basic_auth(self):
3133
"Testing basic HTTP authentication."
32-
username = raw_input('Enter your foursquare username: ')
33-
password = raw_input('Enter your foursquare password: ')
3434
fs = foursquare.Foursquare(foursquare.BasicCredentials(username, password))
3535
test_result = fs.test()
3636
self.assertEqual(test_result['response'], 'ok')
@@ -43,6 +43,9 @@ def test_basic_auth(self):
4343

4444

4545
def test_oauth(self):
46+
if not TEST_OAUTH:
47+
return
48+
4649
# Authorization dance.
4750
oauth_key = raw_input('Enter your foursquare oauth consumer key: ')
4851
oauth_secret = raw_input('Enter your foursquare oauth consumer secret: ')
@@ -75,6 +78,16 @@ def test_arg_handling(self):
7578
venues = fs.venues(geolat=MY_COORDS[0], geolong=MY_COORDS[1], l=1)
7679
self.failUnless('groups' in venues)
7780
self.assertEqual(len(venues['groups'][0]['venues']), 1)
81+
82+
83+
def test_friends(self):
84+
"Testing friend methods."
85+
fs = foursquare.Foursquare(foursquare.BasicCredentials(username, password))
86+
self.failUnless('requests' in fs.friend_requests())
87+
users = fs.findfriends_byname('william')
88+
print len(users['users'])
89+
self.failUnless('users' in users)
90+
self.failUnless(len(users['users']) > 0)
7891

7992

8093
def find_if(objs, pred):
@@ -84,6 +97,12 @@ def find_if(objs, pred):
8497
return None
8598

8699

100+
101+
username = None
102+
password = None
103+
87104
if __name__ == '__main__':
88-
unittest.main()
105+
username = raw_input('Enter your foursquare username: ')
106+
password = raw_input('Enter your foursquare password: ')
107+
unittest.main()
89108

0 commit comments

Comments
 (0)